python替换unicode字符

2024-09-30 02:25:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个程序来读取Windows的DNS调试日志,但里面总是有一些有趣的字符在域字段。在

下面是一个例子:

(13)\xc2\xb5\xc2\xb1\xc2\xbe\xc3\xa2p\xc3\xb4\xc2\x8d(5)example(3)com(0)'

我想用?替换所有\x..

我显式地键入\xc2,如下所示

^{pr2}$

但如果我这样写就不行了:

re.sub('\\\x..', '?', line)

如何编写正则表达式来替换它们?在


Tags: 程序comdnsexamplewindows字符例子xb1
2条回答

这个怎么样?

line = '(13)\xc2\xb5\xc2\xb1\xc2\xbe\xc3\xa2p\xc3\xb4\xc2\x8d(5)example(3)com(0)'

pattern = r'\\x.+'
re.sub(pattern, r'?', line)

有比regex更好的工具用于此作业,您可以尝试例如:

>>> line
'(13)\xc2\xb5\xc2\xb1\xc2\xbe\xc3\xa2p\xc3\xb4\xc2\x8d(5)example(3)com(0)'
>>> line.decode('ascii', 'ignore')
u'(13)p(5)example(3)com(0)'

跳过非ascii字符。或者使用replace,可以将它们替换为“?”占位符:

^{pr2}$

但是最好的解决方案是首先找出是什么错误的编码/解码导致mojibake发生,这样就可以通过使用正确的代码页来恢复数据。

关于取消emojibakehere,有一个很好的答案。请注意,这是一门不精确的科学,很多关键信息实际上都在答案下面的评论帖子中。

相关问题 更多 >

    热门问题