给定文本文件
sample.txt的
2012-01-01 09:00 San Diego Men's Clothing 214.05 Amex
2012-01-01 09:00 San Diego Women's Clothing 153.57 Visa
2012-01-01 09:00 Omaha Music 66.08 Cash
我希望能够只读取第三列的文本。这段代码
for line in open("sample.txt"):
city=line.split()[2]
print(city)
可以在一定程度上阅读第三栏:
San
San
Omaha
但我想要的是:
San Diego
San Diego
Omaha
我该怎么做?
答案 0 :(得分:3)
看起来你的文件被制表符(或\ t)分开。
您是否尝试过标签分割?
而不是city=line.split()[2]
尝试city=line.split('\t')[2]
。
无论如何,看起来此文件是由excel或类似文件生成的,您是否尝试将其导出为CSV(逗号分隔值)格式,而不是纯txt?
然后您可以简单地用逗号分隔,例如city=line.split(',')[2]
希望有所帮助
答案 1 :(得分:1)
您的输入文件似乎有固定的宽度字段。在这种情况下,您可以使用索引来实现目标,例如
>>> for line in open('test.txt'):
... print(line[20:32])
...
San Diego
San Diego
Omaha
如果您需要进一步处理等,可以添加.strip()
来修剪尾随空格。
答案 2 :(得分:0)
你的文本文件用至少两个空格分隔,所以指定拆分两个空格并用strip()剥离末尾的剩余空格。
with open('sample.txt', 'r') as file_handle:
for line in file_handle:
city=line.split(' ')[2].strip()
print(city)
的产率:
San Diego
San Diego
Omaha
答案 3 :(得分:0)
由于sample.txt
中的项目大多以2个空格分隔,因此您需要使用split(' ')
。如果您使用split()
,则会默认拆分每个空格,例如将"Men's Clothing"
转换为["Men's", "Clothing"]
,这不是您想要的。
您可以做的第一件事是查看您的项目:
with open('sample.txt') as in_file:
for line in in_file.readlines():
items = [x.strip() for x in line.strip().split(' ') if x]
print(items)
哪个输出:
['2012-01-01', '09:00', 'San Diego', "Men's Clothing", '214.05', 'Amex']
['2012-01-01', '09:00', 'San Diego', "Women's Clothing", '153.57', 'Visa']
['2012-01-01', '09:00', 'Omaha', 'Music', '66.08', 'Cash']
现在,如果要提取第三列:
print(items[2])
给出了:
San Diego
San Diego
Omaha
答案 4 :(得分:-1)
您需要通过添加将在split()
函数中指定的分隔符来预处理输入文件。像这样:
2012-01-01, 09:00, San Diego, Men's Clothing, 214.05, Amex
2012-01-01, 09:00, San Diego, Women's Clothing, 153.57, Visa
2012-01-01, 09:00, Omaha, Music, 66.08, Cash
然后
for line in open("sample.txt"):
city=line.split(",")[2]
print(city)