我有一个带有 \n 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']]
生成文件的软件允许用户在填写“注释”字段时按“输入”键任意次数。它还允许用户按“输入”创建任意数量的换行符,而无需在“注释”字段中输入任何可见文本。
最后,用户可以在“Note”中间按“enter”任意次数创建多个段落,但从操作的角度来看,这种情况很少见,如果它变得复杂,我愿意不解决这种可能性代码很多。这种可能性真的非常低优先级。
从上面的示例中可以看出,这些操作可能会导致一系列“\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
我曾尝试使用 strip() 和 replace() 方法但没有成功。在使用 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