У меня возникла проблема с построением кода, который я использовал ранее. У меня есть входной файл, содержащий 6 частей данных в строке. Проблема заключается в том, что в качестве разделителя не всегда есть пробелы, чтобы разделить каждую строку вверх, и я также хочу разбить строку на неровных шагах с 4/4/4/8/8/4 символами, т.е. так:Неровная символьная строка split
' 0 0 -16-50.6123 115.393 2'
будет разделен на (0,0, -16, -50,6123,115,393,2). Затем я использую эти данные для создания словаря, где ключ представляет собой массив из первых трех чисел [0,0, -16], а возвращаемое значение представляет собой массив из последних трех чисел [-50.6123,115.393,2].
Код, который я использовал ранее, когда мои данные всегда были разделены пробелом (который я не могу изменить, поскольку он исходит из другого места), был следующим. Есть ли хороший способ изменить код, который у меня уже есть, чтобы разместить новое неравномерное разбиение строк.
Спасибо!
def formatter(lines):
for line in lines:
if not line.strip(): continue
yield [to_float(item) for item in line.split()]
dct1 = {}
with open('test.txt') as f1:
for row in formatter(f1):
dct1[tuple(row[:3])] = row[3:6]
найти разделитель или использовать ломтики – dmg