【问题标题】:Python3 Converting str with screened byte characters to str [closed]Python3将带有屏蔽字节字符的str转换为str [关闭]
【发布时间】:2018-10-27 10:38:46
【问题描述】:

如何从数据库中转换此字段

或到

【问题讨论】:

  • var1 一开始就无效,请使用有效的输入数据更新您的问题。您需要转义字符串中的所有双引号(它本身具有双引号作为外部字符,非转义)
  • 您显示的行均无效,因为您有内部双引号。你真的有一个字典,或者一个奇怪的字符串表示(或者一个字典的字符串表示的字符串表示)?你想取出字典还是字符串?
  • 添加了它在调试器中的外观图片。此行取自数据库
  • 您已更新问题,但var1 var2var3 在python 中仍然无效。您的图片不完整,因为它不包括该字符串的结尾。
  • 使用来自调试器的图像更新

标签: python python-3.x


【解决方案1】:

[编辑]问题已更新,以下是根据原始问题回答的。


如果您修复了您的输入 var1,那么您可以执行以下操作:

var1 = '{"text":"tool","pos":"\\xd1\\x81\\xd1\\x83\\xd1\\x89\\xd0\\xb5\\xd1\\x81\\xd1\\x82\\xd0\\xb2\\xd0\\xb8\\xd1\\x82\\xd0\\xb5\\xd0\\xbb\\xd1\\x8c\\xd0\\xbd\\xd0\\xbe\\xd0\\xb5"}'
md = {}
for e in var1[1:-1].split(','):
    md[e.split(':')[0][1:-1]] = e.split(':')[1][1:-1]
md['pos'] = (bytes.fromhex(''.join([h for h in md['pos'].split('\\x')]))).decode('utf-8')
print(md)

输出:

{'text': 'tool', 'pos': 'существительное'}

【讨论】:

  • 这个解决方案只有在“pos”中有错误的字符时才有效。需要一个更通用的解决方案
  • 感谢您的评论;但请回报:用您的代码更新问题;我一定会对此发表评论。
猜你喜欢
  • 2020-11-17
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2013-05-17
相关资源
最近更新 更多