如何在Python中区分正确的和错误的unicode编码的字符串?

赫里斯

我有各种语言的字符串数据,其中字符串的某些部分看到了一些错误的编码/解码,而另一些是正确的,我需要修复错误的代码:

这是德语单词“Zubehör”的一个示例:

correct = "ZUBEHÖR"
incorrect = "ZUBEHÃ\x96R"

我已经发现我可以纠正这样的错误:

incorrect.encode("raw_unicode_escape").decode("utf8")

但是,在正确的字符串上使用它会产生错误。我可以遍历所有字符串并使用try-statement,但是我不知道这是否可以可靠地工作,我想知道一种更优雅的方法。

此外,虽然\x96在打印时将写入,但实际上只有一个字符:

incorrect[-3]
Out[34]: 'Ã'

incorrect[-2]
Out[33]: '\x96'

我如何才能可靠地仅找到像这样的字符串,这些字符串具有这些奇怪的unicode字符ZUBEHÃ\x96R

编辑:

这是我在实验中偶然发现的一些东西:

当我这样做时incorrect.encode("raw_unicode_escape"),结果是b'ZUBEH\xc3\x96R'

但是当我用这样的西里尔字母来做这个时:

"Персонализированные".encode("raw_unicode_escape")

那么结果是 b'\\u041f\\u0435\\u0440\\u0441\\u043e\\u043d\\u0430\\u043b\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u044b\\u0435'

为什么在做完全相同的事情时\x在第一种情况下出现\u-escapes而在第二种情况下出现-escapes?

为什么我.decode("utf8")可以将\x-escapes转换为可读格式,但不能将\u-escapes转换为可读格式

伦茨

您应该尝试使用“ fixes-text-for-you”库(ftfy):

>>> import ftfy
>>> ftfy.fix_text("ZUBEHÃ\x96R")
'ZUBEHÖR'

它逐行操作,因此,如果您的字符串包含干净且损坏的字符串,但是在单独的行上,ftfy可能可以处理它。

注意:这不是一门精确的科学。ftfy的工作方式涉及很多有根据的猜测。该工具制作精良,但在所有情况下都可能无法正确猜测。如果可以,最好在源头处修复错误(即,确保首先正确解码所有文本)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在iOS7用户代理字符串中区分Chrome和Safari?

来自分类Dev

如何在JavaScript中区分0和空字符串?

来自分类Dev

如何在C#中区分字符串数组中的值

来自分类Dev

如何在python中解码部分转义的unicode字符串(混合的unicode和转义的unicode)?

来自分类Dev

在jQuery中区分字符串包含1和字符串包含11

来自分类Dev

如何在python中将unicode字符串编码为utf-8?

来自分类Dev

如何在urlopen中正确编码字符串?

来自分类Dev

如何在urlopen中正确编码字符串?

来自分类Dev

Python使用unicode编码的字符串

来自分类Dev

Python-unicode字符串中的ASCII编码字符串;如何删除“ u”?

来自分类Dev

如何在忽略不可编码字符的同时输出 Python3(unicode)字符串

来自分类Dev

如何在python中使用特殊字符填充和对齐unicode字符串?

来自分类Dev

如何在Flutter中将Unicode字符串转换为正确的字符串(中文)

来自分类Dev

在CSS中区分Chrome和Safari用户代理字符串(无JavaScript)

来自分类Dev

在CSS中区分Chrome和Safari用户代理字符串(无JavaScript)

来自分类Dev

没有空格时在scanf中区分字符串和int

来自分类Dev

如何区分ByteArray和字符串

来自分类Dev

如何使用BeautifulSoup将UTF-8编码的HTML正确解析为Unicode字符串?

来自分类Dev

Rails 3.2.21 / ruby 1.9.3如何在字符串中对Unicode字符进行编码

来自分类Dev

Rails 3.2.21 / ruby 1.9.3如何在字符串中对Unicode字符进行编码

来自分类Dev

Python如何解决字符串中的Unicode错误

来自分类Dev

在Perl中区分字符串和数字参数

来自分类Dev

Puppet 中区分大小写的字符串比较

来自分类Dev

这个 JSON 字符串的 unicode 是如何编码错误的,我该如何反转它?

来自分类Dev

如何在C#中区分404错误和500错误?

来自分类Dev

如何在Python中迭代Unicode字符串?

来自分类Dev

打开字符串Unicode编码时出现错误

来自分类Dev

错误将字符串编码为python 2.7中的unicode?

来自分类Dev

如何在case语句中区分大写和小写字符?

Related 相关文章

  1. 1

    如何在iOS7用户代理字符串中区分Chrome和Safari?

  2. 2

    如何在JavaScript中区分0和空字符串?

  3. 3

    如何在C#中区分字符串数组中的值

  4. 4

    如何在python中解码部分转义的unicode字符串(混合的unicode和转义的unicode)?

  5. 5

    在jQuery中区分字符串包含1和字符串包含11

  6. 6

    如何在python中将unicode字符串编码为utf-8?

  7. 7

    如何在urlopen中正确编码字符串?

  8. 8

    如何在urlopen中正确编码字符串?

  9. 9

    Python使用unicode编码的字符串

  10. 10

    Python-unicode字符串中的ASCII编码字符串;如何删除“ u”?

  11. 11

    如何在忽略不可编码字符的同时输出 Python3(unicode)字符串

  12. 12

    如何在python中使用特殊字符填充和对齐unicode字符串?

  13. 13

    如何在Flutter中将Unicode字符串转换为正确的字符串(中文)

  14. 14

    在CSS中区分Chrome和Safari用户代理字符串(无JavaScript)

  15. 15

    在CSS中区分Chrome和Safari用户代理字符串(无JavaScript)

  16. 16

    没有空格时在scanf中区分字符串和int

  17. 17

    如何区分ByteArray和字符串

  18. 18

    如何使用BeautifulSoup将UTF-8编码的HTML正确解析为Unicode字符串?

  19. 19

    Rails 3.2.21 / ruby 1.9.3如何在字符串中对Unicode字符进行编码

  20. 20

    Rails 3.2.21 / ruby 1.9.3如何在字符串中对Unicode字符进行编码

  21. 21

    Python如何解决字符串中的Unicode错误

  22. 22

    在Perl中区分字符串和数字参数

  23. 23

    Puppet 中区分大小写的字符串比较

  24. 24

    这个 JSON 字符串的 unicode 是如何编码错误的,我该如何反转它?

  25. 25

    如何在C#中区分404错误和500错误?

  26. 26

    如何在Python中迭代Unicode字符串?

  27. 27

    打开字符串Unicode编码时出现错误

  28. 28

    错误将字符串编码为python 2.7中的unicode?

  29. 29

    如何在case语句中区分大写和小写字符?

热门标签

归档