\ n附加在每行的末尾

时间:2013-07-10 20:53:16

标签: python

我正在逐行写入外部文件。每行有9列,由制表符分隔符分隔。如果我拆分该文件中的每一行并输出最后一列,我可以看到\ n被附加到9列的末尾。我的代码是:

#!/usr/bin/python

with open("temp", "r") as f:
    for lines in f:
        hashes = lines.split("\t")
        print hashes[8]  

最后一列的值是整数,可以是1或2.当我运行这个程序时,我得到的输出是,

['1\n']
['2\n']  

我应该只得到1或2.为什么' \ n'被附加在这里?

我尝试了以下检查以解决问题。

with open("temp", "r") as f:
    for lines in f:
            if lines != '\n':
                    hashes = lines.split("\t")
                    print hashes[8]  

这也不起作用。我试过了if lines != ' '。我怎么能让它消失?提前致谢。

4 个答案:

答案 0 :(得分:7)

尝试在行上使用strip删除\n(新行字符)。 strip删除前导和尾随空格字符。

with open("temp", "r") as f:
    for lines in f.readlines():
        if lines.strip():
            hashes = lines.split("\t")
            print hashes[8]  

答案 1 :(得分:3)

\ n是换行符,它是计算机知道如何在下一行显示数据。如果你修改数组哈希[-1]中的最后一项来删除最后一个字符,那么这应该没问题。

答案 2 :(得分:2)

根据平台的不同,您的行结尾可能不只是一个字符。例如,Dos / Windows使用"\r\n"

def clean(file_handle):
    for line in file_handle:
        yield line.rstrip()

with open('temp', 'r') as f:
    for line in clean(f):
        hashes = line.split('\t')
        print hashes[-1]

我想要保留前导空格时,我更喜欢rstrip()。那并使用生成器函数来清理我的输入。

答案 3 :(得分:1)

因为每行有9列,所以第8个索引(第9个对象)有一个换行符,因为下一行开始了。把它带走:

print hashes[8][:-1]