2010-02-20 5 views
0

Bonjour :) Je ne suis pas en mesure de comprendre quelle est l'erreur dans le programme est-ce que vous pourriez m'aider s'il vous plaît avec elle. Merci .. :)python - erreur de syntaxe

Le fichier d'entrée contient les éléments suivants:

3. भारत का इतिहास काफी समृद्ध एवं विस्तृत है। 
57. जैसे आज के झारखंड प्रदेश से, उन दिनों, बहुत से लोग चाय बागानों में मजदूरी करने के उद्देश्य से असम आए। 

(ses phrases essentiellement échantillons pour lesquels j'ai besoin d'obtenir des positions de mot dans la sortie annexée à chaque mot en hindi)

pour exemple la sortie de la première phrase ressemblerait à ceci:

3. भारत(1) का(2) इतिहास(3) काफी(4) समृद्ध(5) एवं(6) विस्तृत(7) है(8) ।(9) 

je devrais obtenir une séance similaire pour la phrase suivante (s)

Le code ressemble à ceci:

#!/usr/bin/python 
# -*- coding: UTF-8 -*- 
# encoding: utf-8 
separators = [u'।', ',', '.'] 
text = open("hinstest1.txt").read() 
#This converts the encoded text to an internal unicode object, where 
# all characters are properly recognized as an entity: 
text = text.decode("UTF-8") 
#this breaks the text on the white spaces, yielding a list of words: 
words = text.split() 

counter = 1 

output = "" 
#if the last char is a separator, and is joined to the word: 
for word in words: 
    if word[-1] in separators and len(word) > 1: 
     #word up to the second to last char: 
     output += word[:-1] + u'(%d) ' % counter 
     counter += 1 
     #last char 
     output += word[-1] + u'(%d) ' % counter 
    else: 
     output += word + u'(%d) ' % counter 
     counter += 1 

    print output 

L'erreur que je reçois est:

File "pyth_hinwp.py", line 22 
    output += word[-1] + u'(%d) ' % counter 
         ^
SyntaxError: invalid syntax 

Je sais que cette question est quelque chose de semblable à ce que j'ai demandé plus tôt, mais depuis que je ne suis pas capable d'exécuter avec succès certaines des réponses qui m'ont été données plus tôt, donc je suis en train de restructurer la question à l'endroit où je suis actuellement coincé.

+0

Impossible de reproduire cette erreur sur Python 2.5.2! – batbrat

Répondre

3

Ce qui est posté ici n'a pas l'erreur. Notez que ce qui est posté a DEUX espaces entre le + et le output += word[-1] + u'(%d) ' % counter. Ce qui est probablement en train de se produire, c'est que vous avez un caractère d'espace autre qu'un espace. Une possibilité est NBSP (U + 00A0) aka "espace sans pause". Ce que le SO fait pour formater votre code est susceptible d'effacer ces choses.

Diagnostic: À l'invite interactive Python, le type

open("pyth_hinwp.py").readlines()[22-1] 

Que voyez-vous entre le + et le u?

Correction: dans votre éditeur, supprimez les deux caractères entre le + et le u. Insérer un seul espace. A propos, avec une erreur de syntaxe, le problème est entièrement dans le fichier SOURCE nommé; le code n'a pas été exécuté (car il n'a pas pu être compilé) et donc ce qui est dans votre fichier INPUT n'a aucune incidence sur le problème.

+0

Merci pour votre réponse :), j'ai essayé de lancer ce que vous avez dit à l'invite interactive. Voici ce que j'ai obtenu: "\ t \ toutput + = mot [-1] + \ xc2 \ xa0u '(% d)'% compteur \ r" Que pensez-vous que je puisse faire pour remédier à cette situation? Erreur? – boddhisattva

+0

''\ xc2 \ xa0'' est comme je l'ai deviné un NBSP (U + 00A0) codé en UTF-8. Correction == rectifier. En généralisant ce que j'ai écrit dans ma réponse, utilisez un éditeur pour supprimer tout ce qui se trouve entre le + et le u, puis insérez un seul espace. –

+0

De même, n'utilisez aucun éditeur de "traitement de texte" pour produire du code Python. Vous devez utiliser l'éditeur de texte le plus simple et le plus simple. L'espacement importe, et les caractères invisibles (comme un espace insécable) sont impossibles à diagnostiquer. Utilisez 'idle' ou' komodo edit' ou 'BBEdit' ou un outil de programmation. N'utilisez pas de traitement de texte. –

0

Si vous avez une erreur de syntaxe, votre éditeur peut l'afficher avant même de l'exécuter? Dans tous les cas pourquoi n'essayez-vous pas de supprimer ce char où l'erreur est indiquée, car je ne suis pas capable de répliquer le problème, après avoir copié votre code.