5

世界のすべての国のtxtファイルと、どのような製品を輸出しているのかを入手しました。

これは、分割やストリッピングがない場合の1行の外観です(注意\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

私のアドバイス:国をそれが生み出すものにマッピングするdictを作成し、「\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 に答える