将函数应用于Structu中的所有字符串

2024-04-25 21:11:49 发布

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

我有一些复杂的结构需要转换成JSON。通常情况下,这是好的,但有时,我会得到这样的坏数据:

{'FIRST_NAME': 'sdffg\xed', 'LAST_NAME': 'sdfsadf', 'MORE_INFO':['hi','blah', {'key1': 'value1'}]}

简单的json.dumps(data)给了我:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xed in position 6: ordinal not in range(128)

就像json.dumps(data, ensure_ascii=False)。你知道吗

在utf-8中无法读取数据的情况下,我只希望它被忽略。我能找到的唯一方法就是:

item.decode("utf8", "ignore") if item else None

结构中的每一项。那么,有没有:

  1. 如何在json.dumps()内实现这一点(首选)?你知道吗
  2. 有没有一种方法可以将这个字符串函数统一应用于所有字符串,而只应用于某些复杂结构中的字符串?你知道吗

Tags: 数据方法字符串nameinjsondataascii
1条回答
网友
1楼 · 发布于 2024-04-25 21:11:49

如果您的所有附加字符都是latin-1,就像您的示例中使用的:

json.dumps(d, ensure_ascii=False,encoding="latin-1")

会给你正确的输出

{"FIRST_NAME": "sdffgí", "LAST_NAME": "sdfsadf", "MORE_INFO": ["hi", "blah"]}

要删除非ascii字符,可以使用:

d1 = json.dumps(d,ensure_ascii = False)

print (json.loads(re.sub(r'[^\x00-\x7F]','', d1))))

{u'FIRST_NAME': u'sdffg', u'LAST_NAME': u'sdfsadf', u'MORE_INFO': [u'hi', u'blah']}

相关问题 更多 >