2024-09-30 02:25:40 发布
网友
我写了一个程序来读取Windows的DNS调试日志,但里面总是有一些有趣的字符在域字段。在
下面是一个例子:
(13)\xc2\xb5\xc2\xb1\xc2\xbe\xc3\xa2p\xc3\xb4\xc2\x8d(5)example(3)com(0)'
我想用?替换所有\x..
?
\x..
我显式地键入\xc2,如下所示
但如果我这样写就不行了:
re.sub('\\\x..', '?', line)
如何编写正则表达式来替换它们?在
这个怎么样?
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,可以将它们替换为“?”占位符:
但是最好的解决方案是首先找出是什么错误的编码/解码导致mojibake发生,这样就可以通过使用正确的代码页来恢复数据。
关于取消emojibakehere,有一个很好的答案。请注意,这是一门不精确的科学,很多关键信息实际上都在答案下面的评论帖子中。
这个怎么样?
有比regex更好的工具用于此作业,您可以尝试例如:
跳过非ascii字符。或者使用replace,可以将它们替换为“?”占位符:
^{pr2}$但是最好的解决方案是首先找出是什么错误的编码/解码导致mojibake发生,这样就可以通过使用正确的代码页来恢复数据。
关于取消emojibakehere,有一个很好的答案。请注意,这是一门不精确的科学,很多关键信息实际上都在答案下面的评论帖子中。
相关问题 更多 >
编程相关推荐