删除非 unicode 字符 python
Deleting non unicode characters python
我正在尝试 return 一个请求,但它给我一个错误,提示字符串中有非 unicode 字符。我正在过滤掉它们,但随后它会生成 unicode 样式的字符串,这会导致应用程序因格式错误的响应而崩溃。
这是我正在尝试做的事情
unfiltered_string = str({'location_id': location.pk, 'name': location.location_name,'address': location.address+', '+location.locality+', '+location.region+' '+location.postcode, 'distance': location.distance.mi, })
filtered_string = str(filter(lambda x: x in string.printable, unfiltered_string)).encode("utf-8")
locations.append(filtered_string)
麻烦的是它附加了一个看起来像
的字符串
{'distance': 4.075068111513138, 'location_id': 1368, 'name': u'Stanford University', 'address': u'450 Serra Mall, Stanford, CA 94305'}
当我需要 u'string' 时 'string' 就像这样
{'distance': 4.075068111513138, 'location_id': 1368, 'name': 'Stanford University', 'address': '450 Serra Mall, Stanford, CA 94305'}
如果我尝试使用 string.encode('ascii','ignore')
那么我仍然得到
"{'location_id': 1368, 'address': u'450 Serra Mall, Stanford, CA 94305', 'distance': 4.075068111513138, 'name': u'Stanford University'}"
现在我得到了关于 json
的额外报价
所以,我要冒昧地说一下,您的目标是忽略您拥有的 unicode 特定字符。我认为如果你的问题没有更好的解释就很难说出任何明确的话,但是如果你想获得一个 "plain" 字符串而不是一个 unicode 字符串,我建议使用 ascii
编解码器进行编码而不是 utf-8
.
<str>.encode('ascii')
如果要删除其他字符,encode
函数采用可选的第二个参数,允许您忽略指定编解码器无法处理的所有字符:
<str>.encode('ascii', 'ignore')
我正在尝试 return 一个请求,但它给我一个错误,提示字符串中有非 unicode 字符。我正在过滤掉它们,但随后它会生成 unicode 样式的字符串,这会导致应用程序因格式错误的响应而崩溃。
这是我正在尝试做的事情
unfiltered_string = str({'location_id': location.pk, 'name': location.location_name,'address': location.address+', '+location.locality+', '+location.region+' '+location.postcode, 'distance': location.distance.mi, })
filtered_string = str(filter(lambda x: x in string.printable, unfiltered_string)).encode("utf-8")
locations.append(filtered_string)
麻烦的是它附加了一个看起来像
的字符串{'distance': 4.075068111513138, 'location_id': 1368, 'name': u'Stanford University', 'address': u'450 Serra Mall, Stanford, CA 94305'}
当我需要 u'string' 时 'string' 就像这样
{'distance': 4.075068111513138, 'location_id': 1368, 'name': 'Stanford University', 'address': '450 Serra Mall, Stanford, CA 94305'}
如果我尝试使用 string.encode('ascii','ignore')
那么我仍然得到
"{'location_id': 1368, 'address': u'450 Serra Mall, Stanford, CA 94305', 'distance': 4.075068111513138, 'name': u'Stanford University'}"
现在我得到了关于 json
的额外报价所以,我要冒昧地说一下,您的目标是忽略您拥有的 unicode 特定字符。我认为如果你的问题没有更好的解释就很难说出任何明确的话,但是如果你想获得一个 "plain" 字符串而不是一个 unicode 字符串,我建议使用 ascii
编解码器进行编码而不是 utf-8
.
<str>.encode('ascii')
如果要删除其他字符,encode
函数采用可选的第二个参数,允许您忽略指定编解码器无法处理的所有字符:
<str>.encode('ascii', 'ignore')