在Python 2.7中向/从文件写入/读取转义字符

时间:2015-11-17 01:13:01

标签: python python-2.7

我有一个.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

已成功读取该文件。我该怎么做呢?

编辑:向前几位回答者道歉,但我想我会改写我的问题,以减少红色鲱鱼。

3 个答案:

答案 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。如果您不这样做,则行尾字符会自动转换为特定于操作系统的字符。

https://docs.python.org/2/library/functions.html#open