У меня есть файл фиксированной ширины со следующим форматом:
5678223313570888271712000000024XAXX0101010006461801325345088800.0784001501.25abc@yahoo.com
5678223324686600271712000000070XAXX0101010006461801325390998280.0784001501.25abcde.12345@gmail.com 5678123422992299
Вот что я попробовал:
import pandas as pd
ColSpecs = [(0,16),(16,31),(31,44),(44,62),(62,70),(70,73),(73,77),(77,127),(127,143)]
df = pd.read_fwf("~/filename.txt",colspecs=ColSpecs,Header=True)
Теперь это, безусловно, помогает мне чисто конвертировать в формате Pandas.Тем не менее, пустые (или фиксированные пробелы) обрезаются.Например, в поле «Электронная почта» (# 8) установлено 50 символов.Они усекаются, как только они импортируются в кадр данных Pandas.
Для манипулирования данными я создаю 3 новых поля, которые извлекаются из значений ранее импортированных полей.
Структура выходного файла:
[(0,16), (16,31), (31,44), (44,62), (62,70), (70,73), (73,77), (77127), (127143), (143153), (153,163), (164,165)]
С тех пор, как я не нашел ни одного метода to_fwf на фреймах данных или какой-либо другой альтернативы для Pandas -> Flat File (сохраняя оригинальную длину без изменений), я был бы очень признателен, если кто-нибудьесть лучшее решение.
PS: я читал, что awk / sed в Unix работает лучше, но все же хотел бы знать для Python