你怎么从一行删除\ n?

时间:2014-02-12 17:34:00

标签: string python-2.7

我正在从文件中读取行并将它们放入列表中。但是,当我阅读这些行时,他们会使用换行符(\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']

我不确定我错过了什么。

4 个答案:

答案 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]