Was ich versuche zu tun: Es gibt ein großes Excel-Blatt mit vielen zufälligen Kundeninformationen. Ich möchte die E-Mail-Adresse und andere Daten in einem festgelegten Format in einer neuen Excel-Datei sortieren.Wie Text in einer Zelle zu Regex übereinstimmen und nur den Text beibehalten, der Regex entspricht?
Ich kann nicht ganz herausfinden, wie man den Zellentext (der ein Format wie Adressen-E-Mail-Squished togethe und ähnliches haben wird) mit der Regex und nur die Regex-Daten in einer Liste übereinstimmen.
Würde wirklich einige Hilfe zu schätzen wissen. Dank
import sys, os, openpyxl
def sort_email_from_xl():
sheet = sheet_select() #Opens the worksheet
emailRegex = re.compile(r'''([a-zA-Z0-9._%+-][email protected]+[a-zA-Z0-9.-]+(\.[a-zA-Z]{2,4}))''',re.VERBOSE)
customeremails = []
for row in range(0, max_row):
if cell.text == emailRegex:
mail = cell.text
customeremails.append(mail)
return customeremails
print(customeremails)
danke ich sehe mir alle Fehler an, die ich gemacht habe. Aus irgendeinem Grund gibt mir der obige Code einen 'NameError: Name 'max_row' ist nicht definiert '. Ich nahm an, dies ist, weil ich stattdessen 'sheet.max_row' hätte verwenden sollen. Versuchte es und jetzt bekomme ich 'AttributeError: 'str' Objekt hat kein Attribut 'max_row''. Ich bin gerade durch die Dokumente gegangen und ich denke, es könnte sein, weil ich das Blatt mit dem Namen anrufe, den ich zugewiesen habe, anstatt ein Blatt2. Gibt es einen Weg dahin? Ich würde eher das Blatt mit dem Namen, den ich zugewiesen habe, nennen. – Sid
@sid ja, der Code um die for-Schleife benötigt auch Korrekturen, ich fügte einen Link zu einem grundlegenden Python-Skript innerhalb der Antwort – hansaplast
Nein, das Sheet2 scheint kein Problem zu sein. Getestet und jetzt heißt es: Sheet2 existiert nicht. – Sid