我正在从文件中读取行并将它们放入列表中。但是,当我阅读这些行时,他们会使用换行符(\n
)读入。我尝试使用str.strip()
,str.rstrip()
,str.strip("\n")
,str.rstrip("\n")
,str.strip("\\n")
和str.rstrip("\\n")
将其删除,但
他们都没有按我的意愿行事。
这是代码。
lines=[]
with open(v) as x:
for line in x:
if "\n" in line:
lines.append(line)
for line in lines:
line.strip()
if '\n' in line:
print "I'm a stupid computer."
print lines
这恰好产生了这个输出。
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
I'm a stupid computer.
['6\n', '1 2\n', '2 3\n', '3 1\n', '10 11\n', '100 10\n', '11 100\n', '1 100\n', '2 3\n', '3 2\n']
我不确定我错过了什么。
答案 0 :(得分:2)
line.strip()创建没有前导/尾随空格的行副本。您没有对副本执行任何操作,您需要将其分配回该行。你想要:
line = line.strip()
您也可以使用:
with open(v) as fin:
lines = [line.strip() for line in fin.readlines()]
您可能不希望只想添加包含换行符的行。也许您想要的是省略那些不包含任何其他内容的行:
with open(v) as fin:
lines = [line.strip() for line in fin.readlines() if line.strip()]
答案 1 :(得分:1)
您需要将strip()
的输出分配回变量:
line = line.strip()
答案 2 :(得分:1)
Python中的字符串对象是不可变的。 line.strip()
不会更改line
;它返回一个剥离的副本。改为使用line = line.strip()
(或者更好的是,例如,首先将剥离后的版本附加到列表中:
if "\n" in line:
lines.append(line.strip())
答案 3 :(得分:1)
\ n是一个字符,你可以将其分割。
line = line[0:len(line)-1]
或@ Henry的评论,
line[:-1]