Vreau să elimin u00a9 , u201d și alte caractere asemănătoare din șirul meu de caractere din dicționarul dat (python). (Programare, Python, String, Dicționar)

Manjit Kumar a intrebat.
d = {
    "key": "Impress the playing crowd with these classic "
           "Playing Cards u00a9 Personalized Coasters.These beautiful"
           " coasters are made from glass, and measure approximately 4u201d x 4u201d (inches)"
           ".Great to look at, and lovely to the touch.There are 4 coasters in a set.We have "
           "created this exclusive design for all card lovers.Each coaster is a different suit, "
           "with the underneath.Make your next Bridge, or Teen Patti session uber-personal!"
           "Will look great on the bar, or any tabletop.Gift Designed for: Couples, Him, "
           "HerOccasion:Diwali, Bridge, Anniversary, Birthday"}

am încercat funcția de înlocuire pe ea, dar nu a funcționat.

s = d[key].replace('u00a9','')

Comentarii

  • Rețineți că u00a9 este simbolul de copyright. Îndepărtarea acestuia poate avea consecințe juridice. –  > Por Adam Smith.
  • Sunt de acord, eliminarea caracterelor pe care nu le puteți înțelege pare a fi o modalitate greșită de a rezolva această problemă. (Textul propriu-zis are probleme mult mai grave, dar cred că asta nu intră în sfera de acțiune a acestui site). –  > Por tripleee.
  • Vă rog să explicați „dar nu a funcționat”. Ce s-a întâmplat? La ce vă așteptați să se întâmple? –  > Por Jace Browning.
  • @André scrie asta ca răspuns, pare să fie ceea ce caută OP. –  > Por Adam Smith.
  • Tu nu ar trebui eliminați caracterele unicode – trebuie să DFEAL cu ele – vă rugăm să citiți: joelonsoftware.com/articles/Unicode.html –  > Por jsbueno.
3 răspunsuri
user2629998

Dacă doriți să eliminați toate caracterele Unicode dintr-un șir de caractere, puteți folosi string.encode("ascii", "ignore").

Acesta încearcă să codifice șirul în ASCII, iar al doilea parametru ignore îi spune să ignore caracterele pe care nu le poate converti (toate caracterele Unicode) în loc să arunce o excepție, așa cum ar face în mod normal fără acest al doilea parametru, astfel încât să returneze un șir cu numai caracterele care au putut fi convertite cu succes, eliminând astfel toate caracterele Unicode.

Exemplu de utilizare :

unicodeString = "Héllò StàckOvèrflow"
print(unicodeString.encode("ascii", "ignore")) # prints 'Hll StckOvrflow'

Mai multe informații : str.encode() și Unicode în documentația Python.

Vor
d['key'].decode('unicode-escape').encode('ascii', 'ignore')

este ceea ce căutați

>>> d = {
...     "key": "Impress the playing crowd with these classic "
...            "Playing Cards u00a9 Personalized Coasters.These beautiful"
...            " coasters are made from glass, and measure approximately 4u201d x 4u201d (inches)"
...            ".Great to look at, and lovely to the touch.There are 4 coasters in a set.We have "
...            "created this exclusive design for all card lovers.Each coaster is a different suit, "
...            "with the underneath.Make your next Bridge, or Teen Patti session uber-personal!"
...            "Will look great on the bar, or any tabletop.Gift Designed for: Couples, Him, "
...            "HerOccasion:Diwali, Bridge, Anniversary, Birthday"}
>>> d['key'].decode('unicode-escape').encode('ascii', 'ignore')
'Impress the playing crowd with these classic Playing Cards  Personalized Coasters.These beautiful coasters are made from glass, and measure approximately 4 x 4 (inches).Great to look at, and lovely to the touch.There are 4 coasters in a set.We have created this exclusive design for all card lovers.Each coaster is a different suit, with the underneath.Make your next Bridge, or Teen Patti session uber-personal!Will look great on the bar, or any tabletop.Gift Designed for: Couples, Him, HerOccasion:Diwali, Bridge, Anniversary, Birthday'
>>> 

Comentarii

  • AttributeError: 'str' object has no attribute 'decode' –  > Por Adam Smith.
  • str nu are un decode() metodă. – user2629998
Rob Watts

Pentru a elimina caracterele reprezentate de secvențe de evacuare unicode, trebuie să utilizați un șir unicode.

De exemplu,

s = d[key].replace(u'u00a9', '')

Cu toate acestea, după cum au menționat oamenii în comentarii, eliminarea simbolului copyright ar putea fi o idee foarte proastă, deși depinde de ceea ce faceți de fapt cu șirul.

Comentarii

  • (pentru ceea ce merită, d['key'].replace("u00a9","") a funcționat așa cum am vrut eu pe Python3.3) – –  > Por Adam Smith.
  • @AdamSmith face o diferență în Python2.7 –  > Por Rob Watts.
  • da, am încercat pe py2.7 –  > Por Manjit Kumar.