2010-02-20 106 views
0

嗨:)我無法弄清楚程序中的錯誤是否可以請你幫我解決。謝謝.. :)python - 語法錯誤

輸入文件包含以下內容:

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

(它基本上樣品,我需要得到在印地文附加到每個字的輸出字位置的句子)

EG的輸出的第一句話是這樣的:

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

我應該得到類似的運算爲下面的句子(S)

的代碼看起來是這樣的:

#!/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 2010-02-20 06:17:34

回答

3

這裏發佈的內容沒有錯誤。請注意,發佈內容在output += word[-1] + u'(%d) ' % counter的+和u之間有兩個空格字符。可能發生的情況是,除了空格外,還有一個空格字符。一種可能性是NBSP(U + 00A0)又名「不間斷空間」。如何格式化你的代碼可能會抹去這些東西。

診斷:在Python交互式提示符下,鍵入

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

你的+和U之間看到了什麼?

修復:在您的編輯器中,刪除+和u之間的兩個字符。插入一個空格。

順便說一句,有語法錯誤,問題完全在命名的SOURCE文件中;該代碼尚未運行(因爲它無法編譯),因此INPUT文件中的內容對此問題沒有影響。

+0

謝謝你的迴應:),我試着在交互式提示符下運行你所說的話。這是我得到的: 「\ t \ toutput + = word [-1] + \ xc2 \ xa0u'(%d)'%counter \ r \ n」 您認爲我可以如何解決這個問題錯誤? – boddhisattva 2010-02-20 08:25:53

+0

''\ xc2 \ xa0'是我猜到用UTF-8編碼的NBSP(U + 00A0)。修復==糾正。概括我在回答中寫的內容,使用編輯器刪除+和u之間的任何內容,然後插入一個空格。 – 2010-02-20 09:00:03

+0

此外,請勿使用任何「字處理」編輯器來生成有史以來的Python代碼。您必須使用最簡單的純文本編輯器。間距很重要,不可見的字符(如不間斷的空間)是不可能診斷的。使用'idle'或'komodo edit'或'BBEdit'或一些編程工具。不要使用文字處理器。 – 2010-02-20 13:03:27

0

如果你有語法錯誤,你的編輯器可能會在運行之前顯示它嗎?任何情況下,你爲什麼不嘗試刪除錯誤被指示的字符,因爲我不能複製你的代碼後複製問題。