43

HP code wars 2012 の文字配布の問題に取り組んでいます。「識別子に無効な文字があります」というエラー メッセージが表示され続けます。これは何を意味し、どのように修正できますか?

情報をまとめたページはこちら。

import  string

def  text_analyzer(text):
'''The text to be parsed and
the number of occurrences of the letters given back
be. Punctuation marks, and I ignore the EOF
simple. The function is thus very limited.

'''
    result =  {}
 
# Processing
    for  a in  string.ascii_lowercase:
    result [a] =  text.lower (). count (a)
 
    return  result


def  analysis_result (results):

# I look at the data
    keys =  analysis.keys ()
    values \u200b\u200b=  list(analysis.values \u200b\u200b())
    values.sort (reverse = True )

# I turn to the dictionary and
# Must avoid that letters will be overwritten
    w2 =  {}
    list =  []
 
    for  key in  keys:
        item =  w2.get (results [key], 0 )
        if  item = =  0 :
            w2 [analysis results [key]] =  [key]
        else :
            item.append (key)
            w2 [analysis results [key]] =  item

# We get the keys
    keys =  list (w2.keys ())
    keys.sort (reverse = True )
 
    for  key in  keys:
        list =  w2 [key]
        liste.sort ()
        for  a in  list:
            print (a.upper (), "*"  *  key)        
     

text =  """I have a dream that one day this nation will rise up and live out the true
meaning of its creed: "We hold these truths to be self-evident, that all men
are created equal. "I have a dream that my four little children will one day
live in a nation where they will not be Judged by the color of their skin but
by the content of their character.
# # # """

analysis result =  text_analyzer (text)
analysis_results (results)
4

11 に答える 11

101

このエラーSyntaxError: invalid character in identifierは、変数名、関数などの途中に、文字、数字、またはアンダースコアではない文字があることを意味します。実際のエラー メッセージは次のようになります。

  File "invalchar.py", line 23
    values =  list(analysis.values ())
                ^
SyntaxError: invalid character in identifier

これにより、実際の問題が何であるかがわかるので、「無効な文字がどこにあるのか」を推測する必要はありません。その行を見ると、印刷されていないガベージ文字がたくさんあります。それらを取り除けば、これを乗り越えることができます。

実際のガベージ文字が何であるかを知りたい場合は、問題のある行をコードからコピーし、Python インタープリターの文字列に貼り付けました。

>>> s='    values ​​=  list(analysis.values ​​())'
>>> s
'    values \u200b\u200b=  list(analysis.values \u200b\u200b())'

つまり、\u200bまたはZERO WIDTH SPACEです。それが、ページに表示されない理由を説明しています。ほとんどの場合、StackOverflow や wiki などのサイトから、または PDF ファイルから、フォーマットされた (プレーンテキストではない) コードをコピーしたために、これらを取得します。

エディターがそれらの文字を見つけて修正する方法を提供しない場合は、その行を削除して再入力してください。

もちろんIndentationError、インデントされていないものから少なくとも 2 つの s がありSyntaxError、滞在スペース ( の= =代わりに のように==) またはアンダースコアがスペースに変換された ( のanalysis results代わりに のように) から少なくとも 1 つ以上ありますanalysis_results

問題は、どのようにしてコードをこの状態にしたかです。Microsoft Word のようなものをコード エディターとして使用している場合、それが問題です。テキスト エディタを使用します。そうでない場合は、コードを修正する前に、これらの文字化け、インデントの破損、余分なスペースが発生する原因となった根本的な問題が何であれ、それを修正してください。

于 2013-02-13T01:08:32.123 に答える
1

これが正しいかどうかはわかりませんが、pgmpyの使用に関する論文からコードをコピーしてSpyderのエディターに貼り付けたところ、「識別子に無効な文字」というエラーが表示され続けましたが、見た目は悪くありませんでした。特定の行はgrade_cpd = TabularCPD(variable='G',\

正当な理由もなく、コード全体で を に置き換えたところ、機能しました'"理由はわかりませんが、うまくいきました

于 2015-11-20T00:24:48.237 に答える
1
于 2020-01-08T21:21:09.103 に答える
0

モジュールを実行しただけでは、IDLE で適切なエラー メッセージが表示されません。IDLE シェル内からインポート コマンドを入力してみると、より詳細なエラー メッセージが表示されます。私は同じエラーがあり、それがすべての違いを生みました。

(もちろん、電子ブックからコードをコピーしたのですが、目に見えない「間違った」文字でいっぱいでした。)

于 2015-01-01T05:11:43.340 に答える