2012-11-14 3 views
5

Ich habe eine TXT-Datei aller Länder der Welt und welche Art von Produkten exportieren sie.Wie drucke ich etwas und dann seine Liste?

Dies ist, was wie eine Zeile sieht ohne Spaltung oder Strippen (Hinweis \t und \n): [Jamaica\t alumina, bauxite, sugar, rum, coffee, yams, beverages, chemicals, wearing apparel, mineral fuels\n]

Ich habe ein Programm zu schreiben, die das tut:

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'] 

Das, was ich hab bisher getan, aber von jetzt an weiß ich nicht, wie es weiter gehen:

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]) 

Als Ergebnis bekomme ich eine Liste von jedem Land und was exportiert es:

['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'] 

Wie zähle ich? Vielen Dank für Hilfe

+3

'Import os' ist hier unnötig, es sei denn, Sie verwenden es in einem anderen Teil Ihres Codes (nicht oben gezeigt). Es ist auch eine schlechte Idee, die Variablen 'file' (oder' liste' oder 'dict', usw.) zu nennen. – inspectorG4dget

+0

Was ist' seznam'? – kojiro

+0

Sorry, bearbeitet :) – user1824179

Antwort

6

Dies sollte es tun

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 

this helps

+0

Ich denke, Sie vermissen eine Klammer, aus der Sie die Liste der Exporte erstellen. – thegrinner

+0

@thegringer: Du hast absolut recht. Danke für den Bugreport. Behoben – inspectorG4dget

+0

Spaltet die Zeile unnötigerweise zweimal auf. Ich würde 'key, value = line.split ('\ t', 1) verwenden; exports [Schlüssel] = Wert'. – glglgl

0

Wenn Sie durch die Liste aus der Datei iterieren, können Sie list.pop(0) verwenden - dies wird Ihnen das erste Element der Liste und entfernen Sie sie aus der Liste.

Ich würde auch empfehlen, die Verwendung des Schlüsselwortes with zum Öffnen der Datei und Ändern Ihres Variablennamens. So etwas wie:

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 
0

Mein Rat: Konstruktion eines dict Kartierung des Landes auf die Dinge, die es produziert, und teilen jede Zeile auf dem „\ t“

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

for i in file: 
    spl_line = i.split("\t") 
    dict[spl_line[0]] = spl_line[1].split(" ") 
1

Sie bereits die Liste bekommen haben Angenommen Sie erwähnten, Sie können einfach tun

>>> 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'] 
>>> 
+0

Ja, aber dann bekomme ich: United ['Kingdom \ t', 'hergestellt', 'goods', 'kraftstoffe,', 'chemicals,', 'essen, ',' Getränke ',' Tabak ' – user1824179

Verwandte Themen