in python3, à partir d'un fichier .txt existant contenant des paroles / subtitle / autres, Je veux faire une liste simple (sans ni niché) des mots existants, sans espaces ni autres signes d'interpol.
Basé sur d'autres demandes Stackexchange, j'ai fait ce P>
Traceback (most recent call last): File "4.4.4.csv.into.list.py", line 72, in <module> print (re.findall(r"[\w']+", ultimate)) File "/usr/lib/python3.7/re.py", line 223, in findall return _compile(pattern, flags).findall(string) TypeError: expected string or bytes-like object
3 Réponses :
Le message d'erreur est complètement effacé dans votre cas; p> "Charge prévu ou objet similaire à des octets" code>.
Ça désigne votre
ultime code> doit convertir en tant que chaîne
(str) code>, et lorsque vous cochez le type
type code> de votre
ultime code> est
Liste code> objet.
print (re.findall(r"[\w']+", str(ultimate))) # original text
# or
print (re.findall(r"[\w']+", ' '.join(ultimate))) # joined words
Wow, cela fonctionne, puis-je demander une explication plus poussée? Imprimer (Rev.Findall (R "[\ W '] +", Str (Ultimate))) amène-moi de la sortie comme "" elle "," aime "," tu "", "", "", ",", "," "", "Ouais '", "" "," Ouais' "", "" Elle "," aime "," vous "", tandis que l'imprimé (r "[\ windall] +" .join (Ultimate)) donne différemment (plus propre) 'Elle', "aime", "toi", "Ouais", "Ouais", "Ouais", "Elle", "aime", "Yeah ',. Quelle est la différence?
Essayez ceci:
import csv crimefile = open('she_loves_you.txt', 'r') reader = csv.reader(crimefile) allRows = list(reader) # result is a list with nested lists ultimate = [] for i in allRows: ultimate += i.split(" ")
Eh bien, ici, nous avons une erreur $ python3 4.4.4.csv.into.list.py Traceback (appel le plus récent): fichier "4.4.4.csv.into.list.py", ligne 108, dans
Le ci-dessous est une sortie complète du travail que j'ai fabriqué dans la zone de cette question
Le deuxième paramètre de re.findall (ultime dans cet exemple) devrait être une chaîne. Vous passez une liste de chaînes.