我是python的初学者。我有一个制表符分隔的文件,我只想打印第37列,即最后一列。但是,当我运行此代码时,将打印所有数据。我的代码如下:
dicts = {}
for i in open('Book2.txt'):
split_i = i.split('\t')
dicts[split_i[37]] = i.rstrip()
print(i.rstrip())
我是python的初学者。我有一个制表符分隔的文件,我只想打印第37列,即最后一列。但是,当我运行此代码时,将打印所有数据。我的代码如下:
dicts = {}
for i in open('Book2.txt'):
split_i = i.split('\t')
dicts[split_i[37]] = i.rstrip()
print(i.rstrip())
在第4行中,rstrip()是一个字符串函数,用于删除结尾的空格,而不是抓住最后一个单词。由于split()从上一行的字符串创建了一个列表,因此您可以使用列表索引,例如split_i [-1]为列表的最右边项建立索引,或者split_i [36]从左侧获得第37个索引。 此外,这可能不是对字典的正确使用。尝试改为创建一个列表,例如:
col_37 = [] # Empty list instead of a dict
for line in open('Book2.txt'): # Variable 'i' named more intuitively
split_line = line.split('\t') # Separate the string by tabs
col_37.append(split_line[36]) # Add the item you want to your list
print(col_37) # Show the data you just got
,
python中的列表为zero indexed。这意味着第一个元素的索引为0。因此对于第37列,其值为mylist[36]
。由于您需要最后一列,因此有一个快捷方式mylist[-1]
,该快捷方式始终返回列表的最后一个元素。
for line in open('Book2.txt'):
print(line.split('\t')[-1])
List comprehension是处理更简单的for loop
的更简洁,更Python化的方法:
lines = open('Boot2.txt')
col = [line.split('\t')[-1].rstrip() for line in lines]
print("\n".join(col))