Python删除扩展ascii

2024-10-02 06:36:46 发布

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

好吧,我对整个python世界还不熟悉,所以请耐心等待。在

背景:我们正在尝试将日志卸载到mongo中,以便能够更快地查询和搜索它们。设备已经以一种像样的格式打印它们,除了在每个}{之间以开始和结束数据对象,如下所示:

¾ïúÀï{"id":"xxx","timestamp":xxx,"payloadType":"xxx","payload":{"protocol":"xxx","zoneID":xxx,"zoneName":"xxx","eventType":"xxx"}}’ÂCº¾ïúÀï{"id":"xxx","timestamp":xxx,"payloadType":"xxx","payload":{"protocol":"xxx","zoneID":xxx,"zoneName":"xxx","eventType":"xx}}

使用以下方法,我可以将其转换为字节,然后再转换回输出为的字符串:

^{pr2}$

在我看来,这比上面看到的丑陋的角色更容易处理,但我不知道。在

这只是一个示例..在这个日志中返回了成千上万的行。在我看来,理想情况下,最好的方法是删除{之前字符串开头的所有字符以及}}{之间的所有字符


Tags: 方法字符串idmongo世界字符protocoltimestamp
3条回答

将字符串编码为字节,然后解码回ASCII:

data.encode().decode('ascii',errors='ignore')
# {"id":"xxx","timestamp":xxx,...}}

也可以使用正则表达式删除最外层大括号之外的所有字符:

^{pr2}$

后一种机制还顺便删除了您不需要的ASCII'C'字符。在

比如说:

import string

cleaned_string = ''
for char in ugly_string:
    if char in string.printable:
        cleaned_string += char

This question也处理一个类似的问题。在

import re

str='¾ïúÀï{"id":"xxx","timestamp":xxx,"payloadType":"xxx","payload":{"protocol":"xxx","zoneID":xxx,"zoneName":"xxx","eventType":"xxx"}}’ÂCº¾ïúÀï{"id":"xxx","timestamp":xxx,"payloadType":"xxx","payload":{"protocol":"xxx","zoneID":xxx,"zoneName":"xxx","eventType":"xx}}'

str=re.sub('[^\x00-\x7F]','',str)
print(str)

应产生输出为。。。在

^{pr2}$

相关问题 更多 >

    热门问题