在Python 2.7中读写文件中的转义字符
我有一个 .txt
文件,里面有很多行数据,这些数据是用 |
符号分开的。举个例子,这一行的内容 - 你可以看到它已经包含了转义序列。这些转义序列是因为我不知道怎么在类似 .csv
的系统中保留段落和缩进。假设我只能用这个方法。
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
那样就太好了。我该怎么做呢?
补充:对前几位回答者表示歉意,我觉得我应该重写我的问题,让它更清晰。
相关文章:
- 暂无相关问题
3 个回答
你需要以二进制模式打开文件,也就是用“wb”而不是“w”。如果不这样做,文件中的换行符会自动转换成你操作系统特定的格式。
在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本身的数据类型,而不是直接写入磁盘。
编辑## 迭代确实可以在字符串上进行,但不适合你想要的那种情况。 ##编辑
如果你在使用 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
。