我有一个.txt
文件,其中包含许多以|
字符分隔的数据行。以下是一行示例 - 您可以看到它已包含转义序列。他们在那里是因为我不知道如何在.csv-esque系统中保留段落和缩进。我们假设我坚持这个。
Example.|This is an example.\n\nLook at this paragraph.|Great.
我不在将这些行转换为例如时遇到问题类实例的属性 - 我可以毫无问题地阅读和操作|
- 分隔的元素。
当我让Python阅读并打印该行的第二个元素时,我明白了。
'This is an example.\n\nLook at this paragraph.'
\n\n
仍然存在 - 反思并不令人惊讶。
我不知道我的术语是否正确,但我认为我基本上试图让Python将其视为字符串文字,而不是原始字符串文字。我应该补充一点,我对编码一无所知。
基本上,能够写出例如它是有用的。 r'this\nparagraph'
到一个文件,甚至直接在一个文件中输入this\nparagraph
,以查看其中的this\nparagraph
,然后让Python将其打印为
this
paragraph
已成功读取该文件。我该怎么做呢?
编辑:向前几位回答者道歉,但我想我会改写我的问题,以减少红色鲱鱼。
答案 0 :(得分:0)
如果print string
给你'This is an example.\n\nLook at this paragraph.'
,那么这意味着该字符串可能如下所示:
'This is an example.\\n\\nLook at this paragraph.'
\\
是反斜杠自己的转义字符,这使得Python将其视为正常的反斜杠,而不是读取换行符\n
。
修复新行的最简单方法是使用replace
。理想情况下,当您阅读字符串时,请执行此操作,但我会告诉您打印时的外观:
>>> print 'This is an example.\\n\\nLook at this paragraph.'.replace('\\n', '\n')
This is an example.
Look at this paragraph.
这会将转义的\\n
替换为实际的换行符\n
。
答案 1 :(得分:-1)
python中的迭代适用于集合而不是字符串
您可以使用以下
拆分文件with open('quick.txt', 'r') as f:
F = f.split("\n")
for line in F:
print line
或写作
with open('quick.txt', 'w') as f:
text = "" + (q + "\n" for q in "hello\nworld".split("\n"))
f.write(text)
就个人而言,我喜欢在写入文件之前完成所有字符串准备工作,并使用本机python数据类型来处理更动态而不是写入磁盘的事情。
答案 2 :(得分:-1)
您需要以二进制模式打开文件,即wb而不是w。如果您不这样做,则行尾字符会自动转换为特定于操作系统的字符。