2016-04-26 6 views
1

Ich habe Probleme beim Erstellen eines Wörterbuchschlüssels mit einem csvreader. Ich möchte ein Wörterbuch erstellen, das die Standortspalte enthält, in der die Daten gefunden wurden, damit ich sie später an einen neuen Speicherort schreiben kann. Ich habe die Schreibfunktion nicht mit einbezogen, weil ich zuerst die Schlüssel erstellen möchte.Wie erstellen Sie einen Wörterbuchschlüssel aus einer CSV?

Zum Beispiel wurde dieser Datenpunkt 123-123-1234 in Zeile [0] gefunden.

input_file_column_modification = '' 
myData = [] 
primary_key_list = {} 

if os.path.isfile(filename): 
    input_file_column_modification = open(filename) 
    myData = [item for item in csv.reader(input_file_column_modification)] 

for row in myData: 
    primary_key_pattern_match = re.search('\d{3}-\d{3}-\d{4}, row[0], re.I) 
    if primary_key_pattern_match is not None: 
    ** QUESTION: How do I keep track of the row/columns were the data is being found? 
    primary_key_list.append(primary_key_pattern_match.group(0)) 

Stromeingang in Hinweis gelesen werden, dass zwei Einträge kein Muster zu entsprechen haben.


Infos, Adresse, Ort, PLZ, Zuletzt aktualisiert

Lorem ipsum dolor sit amet, consectetur (123-123-1234) adipiscing elita, 100 irgendeine Adresse, Städtename "zipcode", 03/

24/2016

Lorem ipsum dolor sit amet, consectetur adipiscing elit, 200 einige Adressen, Städtename, Postleitzahl, 03/24/2016

Lorem ipsum dolor sit amet, consectetur (345-345-3456) adipiscing elit , 300 einige Adresse, Cityname, Postleitzahl, 03/24/2016

ipsum

Lorem dolor sit amet, consectetur adipiscing elit, 400 irgendeine Adresse, Städtename, Postleitzahl, 03/24/2016

Lorem ipsum dolor sit amet, consectetur (567-567-5678) adipiscing elit, 500 einige Adresse , Städtename, Postleitzahl, 03/24/2016

Antwort

1

eine Möglichkeit, es zu tun wäre über enumerate sein, die Sie sowohl den Index oder „Wiederholungszähler“ und den Wert eines iterable wie Sie Schleife durch sie gibt:

for row_num, row in enumerate(myData): 
    primary_key_pattern_match = re.search('\d{3}-\d{3}-\d{4}, row[0]', re.I) 
    if primary_key_pattern_match is not None: 
     row_num_and_row_data = (row_num, row) 
     # You now have a tuple whose 1st element is the row number 
     # and whose 2nd element is the row (a tuple or list). 

     # You can also skip making a tuple and add the row 
     # to a dictionary immediately (declare it before the loop): 
     row_dict[row_num] = row 

     # or to add the results of the regex: 
     row_dict[row_num] = primary_key_pattern_match.group(0) 
Verwandte Themen