У меня есть вкладка разделителями файл с \ п EOL символов, который выглядит примерно так:Удаление нескольких EOL в файле
User Name\tCode\tTrack\tColor\tNote\n\nUser Name2\tCode2\tTrack2\tColor2\tNote2\n
Я принимаю этот входной файл и переформатирование его в список с помощью вложенного split('\t')
. Список должен выглядеть следующим образом:
[['User Name','Code','Track','Color','Note'],
['User Name2','Code2','Track2','Color2','Note2']]
программное обеспечение, которое генерирует файл позволяет пользователю нажать клавишу «Ввод» любое количество раз при заполнении поля «Примечание». Он также позволяет пользователю нажимать «вводить», создавая любое количество строк новой строки без ввода какого-либо видимого текста в поле «Примечание».
Наконец, пользователь может нажать «ввести» любое количество раз в середине «примечания», создавая несколько абзацев, но это было бы таким редким явлением с операционной точки зрения, что я готов оставить эту возможность не если это усложняет код. Эта возможность действительно, очень низкий приоритет.
Как видно из вышеприведенного примера, эти действия могут приводить к последовательности кодов «\ n \ n ...» любой длины, предшествующей, завершающей или заменяющей поле «Примечание». Или поставить его таким образом, следующие замены требуются прежде, чем я могу поместить объект файла в списке:
\t\n\n... preceding "Note" must become \t
\n\n... trailing "note" must become \n
\n\n... in place of "note" must become \n
\n\n... in the middle of the text note must become a single whitespace, if easy to do
Я попытался с помощью полосы() и заменить() методы не увенчались успехом. Нужно ли копировать файл-файл во что-то другое прежде, чем метод replace() может быть использован на нем?
У меня есть опыт работы с Awk, но я надеюсь, что регулярные выражения для этого не нужны, поскольку я очень новичок в Python. Это код, который мне нужно улучшить, чтобы адресовать несколько строк новой строки:
marker = [i.strip() for i in open('SomeFile.txt', 'r')]
marker_array = []
for i in marker:
marker_array.append(i.split('\t'))
for i in marker_array:
print i
Вы можете изменить программное обеспечение, которое генерирует 'SomeFile.txt'? Если да, то написано ли оно на Python? – falsetru
Может ли пользователь вводить вкладки в поле «Примечание»? – llb
Это помогло бы, если бы вы использовали модуль 'csv' для * записи * этих данных и правильно указывали поле Note. –