Ongeldig teken in id

Ik werk aan het probleem met de distributie van brieven van HP code wars 2012. Ik krijg steeds een foutmelding met de tekst “ongeldig teken in identifier”. Wat betekent dit en hoe kan dit worden opgelost?

Hier is de pagina met de informatie.

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)

Antwoord 1, autoriteit 100%

De fout SyntaxError: invalid character in identifier betekent dat er een teken in het midden van een variabelenaam, functie, enz. staat die geen letter, cijfer of onderstrepingsteken is. De daadwerkelijke foutmelding ziet er ongeveer zo uit:

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

Dat vertelt u wat het werkelijke probleem is, zodat u niet hoeft te raden “waar heb ik een ongeldig teken”? Nou, als je naar die regel kijkt, heb je daar een heleboel niet-afdrukbare afvalkarakters. Schakel ze uit en je komt hier voorbij.

Als je wilt weten wat de echte afvaltekens zijn, heb ik de aanstootgevende regel uit je code gekopieerd en in een string in een Python-interpreter geplakt:

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

Dus dat is \u200b, of NUL BREEDTE RUIMTE. Dat verklaart waarom je het niet op de pagina kunt zien. Meestal krijg je deze omdat je een opgemaakte (geen platte tekst) code hebt gekopieerd van een site zoals StackOverflow of een wiki, of uit een PDF-bestand.

Als uw editor u geen manier geeft om die tekens te vinden en te corrigeren, verwijdert u de regel en typt u deze opnieuw.

Natuurlijk heb je ook ten minste twee IndentationErrors van het niet inspringen van dingen, ten minste één meer SyntaxError van stay-spaties (zoals = = in plaats van ==) of onderstrepingstekens omgezet in spaties (zoals analysis results in plaats van analysis_results).

De vraag is, hoe heb je je code in deze staat gekregen? Als u iets als Microsoft Word als code-editor gebruikt, is dat uw probleem. Gebruik een tekstverwerker. Als dat niet het geval is, wat het hoofdprobleem ook is dat ervoor heeft gezorgd dat je deze rotzooitekens, gebroken inspringingen en extra spaties hebt gekregen, los dat op voordat je probeert je code te repareren.


Antwoord 2, autoriteit 12%

Als uw toetsenbord is ingesteld op Engels VS (Internationaal) in plaats van Engels VS, werken de dubbele aanhalingstekens niet. Dit is de reden waarom de enkele aanhalingstekens in uw geval werkten.


Antwoord 3, autoriteit 3%

Bekijk uw offerte goed, is deze juist of onjuist! Soms werken dubbele aanhalingstekens niet goed, dit hangt af van uw toetsenbordindeling.


Antwoord 4, autoriteit 2%

Ik heb een soortgelijk probleem. Mijn oplossing was om het minteken te veranderen van:

naar

-

Antwoord 5, autoriteit 2%

Ik kreeg die foutmelding als ik soms in de Chinese taal typ.
Als het om leestekens gaat, merk je niet dat je eigenlijk de Chinese versie typt, in plaats van de Engelse versie.

De tolk geeft u een foutmelding, maar voor menselijke ogen is het verschil moeilijk te zien.

Bijvoorbeeld, "," in Chinees; en "," in Engels.
Wees dus voorzichtig met je taalinstelling.


Antwoord 6, autoriteit 2%

Net als bij de vorige antwoorden, is het probleem een ​​karakter (mogelijk onzichtbaar) dat de Python-interpreter niet herkent. Omdat dit vaak te wijten is aan het kopiëren en plakken van code, is het opnieuw typen van de regel een optie.

Maar als u de regel niet opnieuw wilt typen, kunt u uw code plakken in deze tool of iets dergelijks (Google ‘toon unicode-tekens online’), en het zal alle niet-standaard tekens onthullen. Bijvoorbeeld,

s='    values ??=  list(analysis.values ??())'

wordt

s='    values U+200B U+200B?? =  list(analysis.values U+200B U+200B ??())'

Je kunt dan de niet-standaard tekens uit de tekenreeks verwijderen.


Antwoord 7

Ik weet niet zeker of dit klopt, maar toen ik een code kopieerde van een paper over het gebruik van pgmpy en het in de editor onder Spyder plakte, kreeg ik steeds de foutmelding “ongeldig teken in identifier”, hoewel het er niet slecht uitzag voor mij . De specifieke regel was grade_cpd = TabularCPD(variable='G',\

Zonder goede reden heb ik de ' vervangen door " in de hele code en het werkte. Ik weet niet waarom, maar het werkte wel


Antwoord 8

Een beetje laat, maar ik kreeg dezelfde fout en ik realiseerde me dat dit kwam omdat ik wat code uit een PDF had gekopieerd. Controleer het verschil tussen deze twee:
-
?
De eerste is van het raken van het minteken op het toetsenbord en de tweede is van een door latex gegenereerde PDF.


Antwoord 9

Deze fout treedt voornamelijk op bij het kopiëren en plakken van de code. Probeer de symbolen min(-), haakjes ({) te bewerken/vervangen.


Antwoord 10

Je krijgt geen goede foutmelding in IDLE als je de module gewoon uitvoert. Typ een importopdracht vanuit de IDLE-shell en u krijgt een veel informatievere foutmelding. Ik had dezelfde fout en dat maakte het verschil.

(En ja, ik had de code gekopieerd uit een e-boek en het stond vol met onzichtbare “verkeerde” tekens.)


Antwoord 11

Mijn oplossing was om mijn Mac-toetsenbord over te schakelen van Unicode naar Amerikaans Engels.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

nine + 9 =

Other episodes