2013-11-17 4 views

ответ

2

Если число может следовать какой-либо символ, попробуйте использовать регулярное выражение:

>>> import re 
>>> r = re.compile(r'(\d+\.\d+)') 
>>> r.match('50.2000\xc2\xb0 E').group(1) 
'50.2000' 
+0

действительно классный ответ –

2
mystring = '50.2000\xc2\xb0 E' 
print mystring.split("\xc2", 1)[0] 

Выход

50.2000 
+0

Можно ли разбить строку на первый \? –

+0

@HHH См. Мой ответ. – aIKid

+0

Спасибо за помощь людям. Не могли бы вы рассказать мне, почему он не разделил эту строку 'u'26.2833 \ xb0 N''? Он говорит, что 'UnicodeDecodeError: 'ascii' codec не может декодировать байт 0xb0 в позиции 0: порядковый номер не в диапазоне (128)' –

1

Если вы просто хотели, чтобы разделить первые цифры, просто нарежьте строку:

start = 10 #start at the 10th digit 
print mystring[start:] 

Демо:

>>> my_string = 'abcasdkljf23u109842398470ujw{}{\\][\\[' 
>>> start = 10 
>>> print(my_string[start:]) 
23u109842398470ujw{}{\][\[ 

Вы можете , Разделить строку на первой \:

>>> s = r'50.2000\xc2\xb0 E' 
>>> s.split('\\', 1) 
['50.2000', 'xc2\\xb0 E'] 
+0

Возможно, вы захотите исправить 'star = 10' to ' start = 10 ' – Autumnal

+0

Я собирался это сделать, но только один персонаж так не допускается ... – Autumnal

+0

Поторопитесь и доберитесь до 2k, вы можете редактировать столько, сколько хотите :) – aIKid

0

Вы могли бы решить эту проблему с помощью регулярных выражений:

In [1]: import re 

In [2]: string = '50.2000\xc2\xb0 E' 

In [3]: m = re.match('^([0-9]+\.?[0-9]*)', string) 

In [4]: m.group(0) 
Out[4]: '50.2000' 
Смежные вопросы