gpt4 book ai didi

python - 如何从 python 中的字符串中删除 a\

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:17 25 4
gpt4 key购买 nike

我无法让 replace() 正常工作

我试过了 my_string.replace('\\', '')re.sub('\\', '', my_string) , 但两者都不起作用。

我以为\是反斜杠的转义码,我错了吗?

有问题的字符串看起来像

'<2011315123.04C6DACE618A7C2763810@\x82\xb1\x82\xea\x82\xa9\x82\xe7\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4>'

print my_string <2011315123.04C6DACE618A7C2763810@???ꂩ?猩???邾?낤>

是的,它应该看起来像垃圾,但我宁愿得到 '<2011315123.04C6DACE618A7C2763810@82b182ea82a982e78ca982a682e982be82eb82a4>'

最佳答案

您的字符串中没有任何反斜杠。你没有的东西,你不能删除。

考虑您显示为 '\x82' 的内容……这是一个单字节字符串。

>>> s = '\x82'
>>> len(s)
1
>>> ord(s)
130
>>> hex(ord(s))
'0x82'
>>> print s
é # my sys.stdout.encoding is 'cp850'
>>> print repr(s)
'\x82'
>>>

你“宁愿得到”('x82')是没有意义的。

更新 字符串的“非 ascii”部分(以 @> 为界)实际上是主要用平假名书写的日语文本并使用 shift_jis 编码。 IDLE session 的成绩单:

>>> y = '\x82\xb1\x82\xea\x82\xa9\x82\xe7\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4'
>>> print y.decode('shift_jis')
これから見えるだろう

谷歌翻译将“Can not you see the future”翻译成英文。

在对另一个答案的评论中,您说:

I just need ascii

What I'm doing with it is seeing how far apart the two strings are using nltk.edit_distance(), so this will give me a multiple of the true distance. Which is good enough for me.

为什么您认为您需要 ASCII?编辑距离的定义完全独立于任何字母表。

首先,对字符串进行无意义的转换不会为您提供一致可预测 真实距离的倍数。其次,出于以下原因:

x
repr(x)
repr(x).replace('\\', '')
repr(x).replace('\\x', '') # if \ is noise, so is x
x.decode(whatever_the_encoding_is)

为什么选择第三个?

更新 2 回应评论:

(1) 你还没有说为什么你认为你需要“ascii”。 nltk.edit_distance不需要“ascii”——args 被称为“字符串”(不管那是什么意思),但代码将适用于 != 适用的任何 2 个对象序列。换句话说,为什么不只使用上述 5 个选项中的第一个呢?

(2) 接受高达 100% 的编辑距离膨胀有点令人吃惊。请注意,您当前选择的方法将为每个日语字符使用 4 个符号(十六进制数字)。 repr(x) 每个字符使用 8 个符号。 x(第一个选项)使用 2。

(3) 您可以通过规范化编辑距离来减轻通货膨胀效应。不是将 distance(s1, s2) 与 number_of_symbols 阈值进行比较,而是比较 distance(s1, s2)/float(max(len(s1), len(s2))) 具有分数阈值。无论如何通常都会使用规范化……其基本原理是编辑距离为 4 的 20 个符号字符串之间的差异与编辑距离为 2 的 10 个符号字符串之间的差异大致相同,而不是两倍。

(4) nltk.edit_distance 是我见过的 edit_distance 的最低效的纯 Python 实现。 This implementation by Magnus Lie Hetland好多了,但仍有改进的余地。

关于python - 如何从 python 中的字符串中删除 a\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5767954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com