我正在逐行写入外部文件。每行有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 != ' '
。我怎么能让它消失?提前致谢。
答案 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]