2015-04-21 4 views
-1

Мне нужно разбить значения из txt-файла. Проблема в том, что я не могу разделить все данные и вернуться. Я даже не знаю, какой метод str выполнит мою цель. Вот что я хочу сделать:Как эффективно разбить все данные в str на python?

Исходные данные:

1.02.34.35.55.33.64.64.46.74.36.67.45.68.53.75.54.45.23.67.24.98.67.45.23.75.2 

, что я хочу:

1.0 
2.3 
4.3 
5.5 
. 
. 
. 
. 
. 
5.2 
+0

Как вы получаете «данные»? можете ли вы опубликовать код, который вы используете, для чтения текстового файла, чтобы определить «данные»? также, разместите несколько строк текстового файла, как они появляются в самом файле. – dbliss

+1

Все ли цифры всегда будут ровно одной цифрой, за которой следует десятичная точка, за которой следует ровно одна цифра? Если нет, если вы видите «1.012.3», должно ли оно стать «1.0 12.3» или «1.01 2.3»? – Kevin

+0

Нет, у меня этого нет. Все, что я получаю, это текстовый файл, содержащий эти значения. – Taha

ответ

1
s = '1.02.34.35.55.33.64.64.46.74.36.67.45.68.53.75.54.45.23.67.24.98.67.45.23.75.2' 
for i in range(0,len(s),3): 
    print(s[i:i+3]) 
3

chunk строку в группы по три, а затем вновь присоединиться.

def chunks(l, n): 
    """ Yield successive n-sized chunks from l. 
    """ 
    for i in xrange(0, len(l), n): 
     yield l[i:i+n] 

s = '1.02.34.35.55.33.64.64.46.74.36.67.45.68.53.75.54.45.23.67.24.98.67.45.23.75.2' 

print "\n".join(chunks(s,3)) 

Результат:

1.0 
2.3 
4.3 
5.5 
... 
5.2 
+0

Спасибо Kevin ....! – Taha

2

Возможно, самый простой ответ, чтобы разбить строку на 3-х символов одновременно. Это предполагает, что каждое число равно двум цифрам с десятичной точкой между ними.

>>> data = '1.02.34.35.55.33.64.64.46.74.36.67.45.68.53.75.54.45.23.67.24.98.67.45.23.75.2' 
>>> [data[i:i+3] for i in range(0, len(data), 3)] 
['1.0', '2.3', '4.3', '5.5', '5.3', '3.6', '4.6', '4.4', '6.7', '4.3', '6.6', '7.4', '5.6', '8.5', '3.7', '5.5', '4.4', '5.2', '3.6', '7.2', '4.9', '8.6', '7.4', '5.2', '3.7', '5.2'] 
+0

Спасибо, Джон ... !! – Taha

1

Вы также можете использовать регулярное выражение.

import re 
test='1.02.34.35.55.33.64.64.46.74.36.67.45.68.53.75.54.45.23.67.24.98.67.45.23.75.2' 
num = re.compile('\d\.\d') 
list_of_num = re.findall(num, test) 

Внутренне он делает то же самое - двигатель регулярных выражений соответствует каждому персонажу. Поэтому нельзя сказать, что это более показательно. Однако вам не нужно смотреть на петли.

+0

Спасибо Rcynic ...! – Taha

Смежные вопросы