5

我有一个世界上所有国家的txt文件,以及他们出口什么样的产品。

这是没有任何拆分或剥离的一行的样子(注意\t\n): [Jamaica\t alumina, bauxite, sugar, rum, coffee, yams, beverages, chemicals, wearing apparel, mineral fuels\n]

我必须编写一个程序来做到这一点:

Angola
[ 'oil,', 'diamonds,', 'refined', 'petroleum', 'products,', 'coffee,', 'sisal,', 'fish,', 'fish', 'products,', 'timber,', 'cotton']

Anguilla
[ 'lobster,', 'fish,', 'livestock,', 'salt,', 'concrete', 'blocks,', 'rum']

Antigua and Barbuda
[ 'petroleum', 'products,', 'bedding,', 'handicrafts,', 'electronic', 'components,', 'transport', 'equipment,', 'food,', 'live', 'animals']

Argentina
[ 'soybeans,', 'petroleum,', 'gas,', 'vehicles,', 'corn,', 'wheat']

这是我到目前为止所做的,但从现在开始我不知道如何前进:

import os
file=open("exports.txt",'r')
list=[]

for i in file:
    list.append(i.split(" "))

for i in range(len(list)):
    print(list[i])

结果,我得到了每个国家/地区的清单以及它出口什么:

['Angola\t', 'oil,', 'diamonds,', 'refined', 'petroleum', 'products,', 'coffee,', 'sisal,', 'fish,', 'fish', 'products,', 'timber,', 'cotton\n']
['Anguilla\t', 'lobster,', 'fish,', 'livestock,', 'salt,', 'concrete', 'blocks,', 'rum\n']
['Antigua', 'and', 'Barbuda\t', 'petroleum', 'products,', 'bedding,', 'handicrafts,', 'electronic', 'components,', 'transport', 'equipment,', 'food,', 'live', 'animals\n']
['Argentina\t', 'soybeans,', 'petroleum,', 'gas,', 'vehicles,', 'corn,', 'wheat\n']

我该如何计数?感谢帮助

4

4 回答 4

6

这应该这样做

with open("exports.txt",'r') as infile:
    exports = {}
    for line in infile:
        parts = line.partition('\t')
        exports[parts[0]] = parts[-1].strip().split(', ')

for country, exports in exports.iteritems():
    print country
    print exports

希望这可以帮助

于 2012-11-14T16:00:36.813 回答
1

假设你已经得到了你提到的列表,你可以简单地做

>>> some_list
[['Angola\t', 'oil,', 'diamonds,', 'refined', 'petroleum', 'products,', 'coffee,', 'sisal,', 'fish,', 'fish', 'products,', 'timber,', 'cotton\n'], ['Anguilla\t', 'lobster,', 'fish,', 'livestock,', 'salt,', 'concrete', 'blocks,', 'rum\n'], ['Antigua', 'and', 'Barbuda\t', 'petroleum', 'products,', 'bedding,', 'handicrafts,', 'electronic', 'components,', 'transport', 'equipment,', 'food,', 'live', 'animals\n'], ['Argentina\t', 'soybeans,', 'petroleum,', 'gas,', 'vehicles,', 'corn,', 'wheat\n']]
>>> for row in some_list:
    print row[0]
    print map(str.strip,row[1:])


Angola  
['oil,', 'diamonds,', 'refined', 'petroleum', 'products,', 'coffee,', 'sisal,', 'fish,', 'fish', 'products,', 'timber,', 'cotton\n']
Anguilla    
['lobster,', 'fish,', 'livestock,', 'salt,', 'concrete', 'blocks,', 'rum\n']
Antigua
['and', 'Barbuda\t', 'petroleum', 'products,', 'bedding,', 'handicrafts,', 'electronic', 'components,', 'transport', 'equipment,', 'food,', 'live', 'animals\n']
Argentina   
['soybeans,', 'petroleum,', 'gas,', 'vehicles,', 'corn,', 'wheat\n']
>>> 
于 2012-11-14T16:02:01.333 回答
0

当您从文件中遍历列表时,您可以使用list.pop(0)- 这将为您提供列表的第一个元素并将其从列表中删除。

我还建议切换到使用with关键字打开文件并更改变量名。所以像:

with open("exports.txt",'r') as infile:
    lines = infile.readlines()

for line in lines: 
    print line.pop(0) #Note that this doesn't actually remove the tab
    print line
于 2012-11-14T16:00:51.920 回答
0

我的建议:构建一个将国家映射到它所生产的东西的字典,并在 "\t" 上分割每一行

file=open("exports.txt",'r')
dict = {}

for i in file:
    spl_line = i.split("\t")
    dict[spl_line[0]] = spl_line[1].split(" ")
于 2012-11-14T16:01:01.170 回答