2010-02-20 5 views
0

Привет :) Я не могу понять, какая ошибка в программе вы могли бы мне помочь мне. Спасибо .. :)python - ошибка синтаксиса

Входной файл содержит следующее:

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

(его в основном выборки предложений, для которых мне нужно, чтобы получить позиции слов в выходном сигнале, приложенном к каждому слову в Hindi)

, например, для выхода на первое предложение будет выглядеть следующим образом:

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

я должен получить аналогичный оп для следующего предложения (ов)

код выглядит следующим образом:

#!/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 

Ошибка я получаю:

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

Я знаю, что этот вопрос является нечто похожее на то, что я спросил ранее, но так как я не способный успешно выполнить некоторые из ответов, предоставленных мне ранее, поэтому я как бы перестраиваю вопрос до того места, где я сейчас застреваю.

+0

Невозможно воспроизвести эту ошибку на Python 2.5.2! – batbrat

ответ

3

Что размещено здесь, не имеет ошибки. Обратите внимание, что то, что опубликовано, имеет два символа пробела между + и u в output += word[-1] + u'(%d) ' % counter. Вероятно, происходит то, что у вас есть пробельный символ, отличный от пробела. Возможна NBSP (U + 00A0), а также «свободное пространство». То, что SO делает для форматирования вашего кода, скорее всего, скроет такие вещи.

Диагноз: В интерактивном режиме Python, тип

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

Что вы видите между + и и-?

Исправление: в вашем редакторе удалите оба символа между + и u. Вставьте одно пространство.

Кстати, с синтаксической ошибкой проблема полностью находится в названном файле SOURCE; код не был запущен (потому что он не может быть скомпилирован), и поэтому то, что находится в вашем файле INPUT, не влияет на проблему.

+0

Спасибо за ваш ответ :), я попытался запустить то, что вы сказали в интерактивном приглашении. Это то, что я получил: «\ t \ toutput + = word [-1] + \ xc2 \ xa0u '(% d)'% counter \ r \ n" Как вы думаете, что вы можете сделать, чтобы исправить это ошибка? – boddhisattva

+0

'' \ xc2 \ xa0'', как я догадался NBSP (U + 00A0), закодированный в UTF-8. Исправить = исправить. Обобщая то, что я написал в своем ответе, используйте редактор, чтобы удалить все, что находится между + и u, а затем вставьте одно пространство. –

+0

Кроме того, не используйте редактор «текстовых обработок» любого типа для создания кода Python. Вы должны использовать самый простой, простой текстовый редактор. Расстояние, и невидимые символы (например, неразрывное пространство) невозможно диагностировать. Используйте 'idle' или' komodo edit' или 'BBEdit' или какой-либо программный инструмент. Не используйте текстовый процессор. –

0

Если у вас есть синтаксическая ошибка, ваш редактор может показывать ее даже после ее запуска? В любом случае, почему бы вам не попробовать удалить этот символ, где указывается ошибка, потому что я не могу реплицировать проблему после копирования кода.

Смежные вопросы