1

我正在将行逐行写入外部文件。每行有 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

4 回答 4

7

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

with open("temp", "r") as f:
    for lines in f.readlines():
        if lines.strip():
            hashes = lines.split("\t")
            print hashes[8]  
于 2013-07-10T20:55:02.653 回答
3

\n 是换行符,它是计算机知道在下一行显示数据的方式。如果您修改数组 hashes[-1] 中的最后一项以删除最后一个字符,那应该没问题。

于 2013-07-10T20:56:33.983 回答
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()保留前导空格的时候。那并使用生成器函数来清理我的输入。

于 2013-07-10T21:23:18.997 回答
1

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

print hashes[8][:-1]
于 2013-07-10T20:55:09.377 回答