2017-01-16 6 views
0

Ich habe eine Liste mit 2 Elementen mit regex:Entfernen Zeichen in einer Liste von Strings

body = ['''Customer formerly known as ALEX tel # 123 . 123123 123 
word word word word ...''', '12323'] 

ich Regex zu verwenden versuchen die Leerzeichen zu entfernen und nur Worte für den Text im ersten Punkt zu verlassen. Ich bin in der Lage zu entfernen, aber nicht durch die Liste gehen. Ich bekomme einen Fehler.

for j, item in enumerate(body): 
    test = re.sub(r'[^A-Za-z-]+', ' ', body[0]) 
    item[0] = test 
    print(item) 

Ich würde die neue Liste wie mit ersetzt werden:

['''Customer formerly known as ALEX tel word word word word''', '12323'] 

ist (man denke "hello") einen String
Traceback (most recent call last) <ipython-input-107-301fe3075791> in <module>() 
     6 for j, item in enumerate(body): 
     7  test = re.sub(r'[^A-Za-z-]+', ' ', body[0]) 
----> 8  item[0] = test 
     9  print(item) 
    10 
TypeError: 'str' object does not support item assignment 
+0

Was mit dem Einzeiler 'Körper falsch ist [ 0] = re (r '[^ A-Za-z -] +', '', Körper [0]) '? – DyZ

+2

Ihr Code macht einfach keinen Sinn. Sie ignorieren den von enumerate bereitgestellten Index und versuchen, dem ersten Zeichen jedes Elements in der Liste zuzuweisen. – jonrsharpe

Antwort

0

Artikel

"hello"[2] = '5' 

nicht erlaubt ist Operation ... eine gute Methode, um diese Art von Sache zu debuggen ist die print (z.B. print item, bevor der Fehler occures)

dass Adressen, warum Sie den Fehler bekamen, gibt es ein paar anderen issueus mit Ihrem Code jedoch (jonrsharps Kommentar siehe zum Beispiel)

+0

Ich denke, ich verstehe, aber ich bin mir immer noch nicht sicher, wie Sie alle Nicht-Alpha im ersten Element der Liste entfernen und eine neue Liste mit zwei Zeichenfolgen zurückgeben, die nur alphabetische Zeichen in der ersten Zeichenfolge enthält? – apiccolo

+0

Ich denke, ich verstehe es jetzt, Jonshars hat gearbeitet, ich bin ein Neuling so wenig langsam: – apiccolo

Verwandte Themen