2017-07-13 1 views
0

Ce que je veux faire est très simple.Python ne reconnaît pas les citations

  1. Récupérer un fichier texte à partir
  2. Si le texte contient des guillemets, obtenir le texte à l'intérieur des guillemets.

Pour ce faire, je me sers de ce regex, emprunté à un autre poste.

re.findall('"([^"]*)"', text) 

Le problème que je courais dans cependant, est que les citations particulières qui sont contenues dans mes fichiers textes ne sont pas reconnus comme des citations.

Par exemple:

text = #get text from a file 

print(text) 
#Outputs: 'this is a "test"' 

print(re.findall('"([^"]*)"', text)) 
#Outputs: [] 

Mais si je tape directement la chaîne en tant que variable qu'il fonctionne correctement.

text = 'this is a "test"' 

#The same regex outputs ['test'] 

Donc, je crois que mon problème ici est quelque chose à voir avec l'encodage. Cela étant dit, le type (text) retourne str.

Edit: Solution J'ai trouvé grâce à @rmharrison Voici ce qui fonctionne maintenant

import re 
from unidecode import unidecode 

text = # Text From File 

cleaned_text = unidecode(text) 

print(re.findall('"([^"]*)"', cleaned_text)) 

#This successfully outputs text inside quotes. 
+3

Peut-être que vous utilisez Citations –

+0

Utilisez-vous Python2 ou Python3? Et, qu'est-ce que 'print (repr (text))' révèle? –

+3

Veuillez fournir un cas de test court et reproductible. Voir [mcve] pour pourquoi et comment. –

Répondre

0

Solution J'ai trouvé grâce à @rmharrison Voici ce qui fonctionne maintenant

import re 
from unidecode import unidecode 

text = # Text From File 

cleaned_text = unidecode(text) 

print(re.findall('"([^"]*)"', cleaned_text)) 

#This successfully outputs text inside quotes.