Wie Entferne ich ein \ aus einem string in python
Ich bin mit Mühe ein replace() arbeiten
Ich habe versucht my_string.replace('\\', '')
und re.sub('\\', '', my_string)
, aber keiner funktioniert.
Dachte ich, \ wurde die escape-code für den umgekehrten Schrägstrich, bin ich falsch?
Den string in Frage, sieht aus wie
'<2011315123.04C6DACE618A7C2763810@\x82\xb1\x82\xea\x82\xa9\x82\xe7\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4>'
oder print my_string
<2011315123.04C6DACE618A7C2763810@???ꂩ?猩???邾?낤>
Ja, es soll Aussehen wie Müll, aber ich würde eher bekommen
'<2011315123.04C6DACE618A7C2763810@82b182ea82a982e78ca982a682e982be82eb82a4>'
- Verwandte: stackoverflow.com/questions/92438/...
- Das hat auch nicht wirklich helfen. Ich will meinen string enthalten nur ascii-Zeichen, aber ich will nicht komplett stripout die nicht-ascii-Zeichen, nur ascii-Literale.
- Ich will den ascii-weil es STARK vereinfacht das regex-Suchmuster, die ich verwenden kann. Kann ich für \@[\w\.]+\ und mit ihm getan werden, weil ich weiß, wenn ich ein ']', '>', '' oder irgendetwas in der Art mein domain-name ist beendet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie keine backslashes in den string. Was Sie nicht haben, können Sie nicht entfernen.
Betrachten, was Sie sind, die zeigen, wie
'\x82'
... dies ist ein ein-byte-Zeichenfolge.Das, was man "lieber" (
'x82'
) ist bedeutungslos.Update Die "nicht-ascii" - Teil der Zeichenfolge (begrenzt durch
@
und>
) ist eigentlich Japanisch geschriebenen text meist in Hiragana und codiertshift_jis
. Protokoll der Sitzung im LEERLAUF:Google Translate produziert "Kann man nicht in die Zukunft sehen", wie die englische übersetzung.
In einem Kommentar auf eine andere Antwort, Sie sagen:
und
Warum Sie denken, Sie brauchen, ASCII? Edit-Distanz ist definiert, ganz unabhängig von irgendeinem alphabet.
Für einen start, dabei unsinnige Transformationen der Saiten wird nicht geben Ihnen eine konsistente oder absehbare Vielfache der wahren Entfernung. Zweitens, aus den folgenden:
warum wählen Sie die Dritte?
Update 2 in Reaktion auf die Kommentare:
(1) Sie haben noch immer nicht gesagt, warum Sie glauben, dass Sie "ascii". nltk.edit_distance nicht erforderlich ist "ascii" -- die Argumente sind gesagt, "strings" (was auch immer das bedeutet), aber der code funktioniert mit allen 2-Sequenzen von Objekten, für die
!=
funktioniert. In anderen Worten, warum man nicht einfach den ersten der oben genannten 5 Optionen?(2) über die Annahme bis zu 100% inflation der edit-Distanz ist somwhat erstaunlich. Beachten Sie, dass Ihre gewählte Methode verwenden 4 Zeichen (hex-Ziffern) pro-japanischen Charakter.
repr(x)
verwendet 8 Symbole pro Charakter.x
(die erste option) verwendet 2.(3) Sie können die Abmilderung der inflation-Effekt durch die Normalisierung Ihre edit-Distanz. Statt vergleichen
distance(s1, s2)
mit einem number_of_symbols Schwellenwert, vergleichendistance(s1, s2) /float(max(len(s1), len(s2)))
mit einem Bruchteil Schwelle. Hinweis Normalisierung ist in der Regel verwendet, sowieso ... die Begründung ist, dass die Unähnlichkeit zwischen 20- - symbol-strings mit einer edit-Distanz von 4 ist ungefähr der gleiche wie zwischen 10-symbol-strings mit einer edit-Distanz von 2, nicht doppelt so viel.(4) nltk.edit_distance ist die meisten schockierend ineffizient pure-Python-Implementierung von edit_distance, die ich je gesehen habe. Diese Implementierung von Magnus Lie Hetland ist viel besser, aber immer noch verbesserungsfähig.
repr(x).replace('\\x', '')
dann würde ich es verwenden.chardet
funktioniert gut, wenn die Darstellung mit UTF-8, mit Codierungen verwendet werden, die mit der kyrillischen Schrift, und mit Codierungen verwendet mit Chinesisch, Japanisch und Koreanisch-es identifiziert die guff als shift_jis-aber die Abdeckung ist sonst lückenhaft. Für andere Probleme, siehe meine aktualisierte Antwort.Diese Werke, die ich denke, wenn Sie wirklich wollen, um gerade Streifen die "\"
Aber wie die Antwort oben, was man bekommt, ist ziemlich sinnlos.