Mein Code unten überprüft die Gültigkeit von Postleitzahlen mit einem regulären Ausdruck. Die Postleitzahlen werden in Form eines Arrays vergeben. Die for-Schleife überprüft die Gültigkeit jeder Postleitzahl mit dem gegebenen regulären Ausdruck. Jetzt möchte ich alle gültigen Postleitzahlen in eine CSV-Datei schreiben. Unten ist mein Code:Schreiben Sie Daten in Csv-Datei in Python
import csv
import re
regex = r"(GIR\s0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9]((BR|FY|HA|HD|HG|HR|HS|HX|JE|LD|SM|SR|WC|WN|ZE)[0-9])[0-9])|([A-PR-UWYZ][A-HK-Y](AB|LL|SO)[0-9])|(WC[0-9][A-Z])|(([A-PR-UWYZ][0-9][A-HJKPSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))))\s[0-9][ABD-HJLNP-UW-Z]{2})"
postcodes = ['$%±()()','XX XXX','A1 9A','LS44PL','Q1A 9AA','V1A 9AA','X1A 9BB','LI10 3QP','LJ10 3QP','LZ10 3QP','A9Q 9AA','AA9C 9AA','FY10 4PL','SO1 4QQ','EC1A 1BB','W1A 0AX','M1 1AE','B33 8TH','CR2 6XH','DN55 1PT','GIR 0AA','SO10 9AA','FY9 9AA','WC1A 9AA']
for x in postcodes:
if(re.findall(regex,x)):
with open('test2.csv','w',newline='') as fp:
a = csv.writer(fp)
a.writerows(x)
Das Problem mit dem Code ist es nicht alle gültigen Postleitzahlen in die CSV-Datei schreibt, statt nur den letzten Postleitzahl (WC1A 9AA) in folgendem Format schreiben:
W
C
1
A
9
A
A
Ich weiß nicht, wo ich den Fehler mache. Bitte helfen Sie.
Ich glaube, Sie wollen, dass die 'mit offenem (' und der folgenden Zeile, die vor Ihre for-Schleife kommt – jcfollower
Es funktioniert, aber das Problem ist, dass es nur ein Wort in Folge druckt.Zum Beispiel wird die Postleitzahl WC1A 9AA so gedruckt, wie ich in der obigen Frage geschrieben habe. –
'writerows()' erwartet das Argument Da es sich um eine Liste von Zeilen handelt, rufen Sie sie mit einer einzigen Zeichenfolge auf, also teilt sie die Zeichenfolge in eine Liste von Zeichen auf und jedes Zeichen ist eine Zeile – Barmar