为什么readlines()在我的文本文件中包含\ n字符(如果不存在)?

时间:2019-05-17 00:04:57

标签: python python-3.x

我正在尝试读取文件并收集包含以下内容的每个字符:“ \ n”“ \ t”“”

我的文本文件包含以下内容:

aaabbcddd

我特意遗漏了\ n,因此python应该在d处停止读取。

代码如下:

fname  = "files.txt"
content = []
with open(fname) as f:
    for each_line in f:
        for each_character in each_line:
            content.append(each_character)


print(content)

我的内容输出是:

['a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', '\n']

如果故意将“ \ n”存储在我的列表中,那很好。但是,在这种情况下,我没有输入'\ n'。

出了什么问题?

3 个答案:

答案 0 :(得分:2)

您读了一行。

行以换行符终止。我很确定您的文本编辑器会在您键入的内容的末尾插入该文字。

尝试添加对输入内容的简单跟踪:

for each_line in f:
    print(len(each_line), "|", each_line, "|")

我的输出:

10 | aaabbcddd
 |
['a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', '\n']

即使我没有没有向文件中添加返回字符,并且它只有一行,但编辑器(vi)还是假定它。输入的字符串包含9个字母和换行符。

答案 1 :(得分:2)

您确定您的文本文件在此字符串之后没有换行符吗?我已尝试按原样运行您的代码,并且该代码在数组中不包含“ \ n”。输出如下:

['a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd']

有时在文本文件中可能会意外插入换行符,并且仔细检查也无妨。

答案 2 :(得分:1)

也许文本编辑器会自动保存换行符?