Python 将 \n 读取为字符串

Python reads \n as string

我正在使用 python 2.7.9 和 OS X Yosemite。我有一个名为 list.dat 的文件,其中包含以下内容:

item1, a
item2, b
item3, c

我有一个 python 脚本:

list=[]
f=open('list.dat','r')
for line in f.readlines():
    list.append(line.rsplit(','))

f.close()

print list

产生输出:

[['item1', ' a\n'], ['item2', ' b\n'], ['item3', ' c']]

\n 应该出现在输出中吗?如果是这样,我怎样才能修改代码,使他们不这样做?

'\n' 表示一个新行,它显然存在于您的文本文件中。因此,'\n's 应该出现在输出中。

基本上,您的 .dat 文件是:

item1, a\n
item2, b\n
item3, c\n

要删除它,请尝试以下操作:

list=[]
f=open('list.dat','r')
for line in f.readlines():
    list.append(line.strip('\n').rsplit(','))

f.close()

print list

这使用 str.strip('\n') 从字符串中删除换行符 ('\n's)。


>>> list=[]
>>> f=open('list.dat','r')
>>> for line in f.readlines():
...     list.append(line.strip('\n').rsplit(','))
... 
>>> f.close()
>>> 
>>> print list
[['item1', ' a'], ['item2', ' b'], ['item3', ' c']]
>>> 

'\n' 是换行符。您必须手动删除它或使用 csv-module:

import csv
with open('list.dat') as f:
    data = list(csv.reader(f))
print data

您可以添加 replacestrip 函数。

永远不要将您的列表命名为 "list" 因为 list is a python builtin.

list1=[]
f=open('list.dat','r')
for line in f.readlines():
    list1.append(line.rsplit(',').strip('\n'))

f.close()

print list1