Haben Sie eine Reihe von Zeichenfolgen wie folgt

text:u'MUC-EC-099_SC-Memory-01_TC-25'
text:u'MUC-EC-099_SC-Memory-01_TC-26'
text:u'MUC-EC-099_SC-Memory-01_TC-27'

Diese Daten habe ich aus einer Xls-Datei extrahiert und in string konvertiert. Jetzt muss ich Daten extrahieren, die sich in einfachen Anführungszeichen befinden, und sie in eine Liste einfügen.

Erwartete Ausgabe wie

[MUC-EC-099_SC-Memory-01_TC-25, MUC-EC-099_SC-Memory-01_TC-26,MUC-EC-099_SC-Memory-01_TC-27]

Danke im Voraus.

2
WEshruth 18 Okt. 2013 im 16:29

3 Antworten

Beste Antwort

Verwenden Sie re.findall:

>>> import re
>>> strs = """text:u'MUC-EC-099_SC-Memory-01_TC-25'
text:u'MUC-EC-099_SC-Memory-01_TC-26'
text:u'MUC-EC-099_SC-Memory-01_TC-27'"""
>>> re.findall(r"'(.*?)'", strs, re.DOTALL)
['MUC-EC-099_SC-Memory-01_TC-25',
 'MUC-EC-099_SC-Memory-01_TC-26',
 'MUC-EC-099_SC-Memory-01_TC-27'
]
8
Ashwini Chaudhary 18 Okt. 2013 im 12:34

Das Präfix text: kommt mir ein wenig bekannt vor. Verwenden Sie xlrd, um es zu extrahieren? In diesem Fall haben Sie das Präfix, weil Sie das umschlossene Cell Objekt erhalten, nicht den Wert in der Zelle. Zum Beispiel denke ich, dass Sie so etwas tun

>>> sheet.cell(2,2)
number:4.0
>>> sheet.cell(3,3)
text:u'C'

Verwenden Sie .value, um das entpackte Objekt abzurufen:

>>> sheet.cell(3,3).value
u'C'

(Denken Sie daran, dass das u hier nur sagt, dass die Zeichenfolge Unicode ist. Dies ist kein Problem.)

2
DSM 18 Okt. 2013 im 12:45

Sie können den folgenden Ausdruck verwenden:

(?<=')[^']+(?=')

Dies entspricht null oder mehr Zeichen, die nicht ' sind und zwischen ' und ' eingeschlossen sind.

Python-Code:

quoted = re.compile("(?<=')[^']+(?=')")
for value in quoted.findall(str(row[1])):
    i.append(value)
    print i
3
Ibrahim Najjar 18 Okt. 2013 im 12:40