python-2.7 - 是否有 Python 函数可以将 unicode 文字转换为可读形式?
问题描述
我已经成功反编译了扩展名为 .pyc 的 python 2.7 文件。问题是原始脚本包含俄语的注释块,在反编译后,它们被转换为原始的 unicode 文字,
例如
msg = u '\ u0444 \ u0430 \ u0439 \ u043b \ u0435'
我发现很难将它们转换成可读的形式。我想在 python 中有一个函数接受 unicode 文字作为参数并在输出中给出一个可读的字符串,但我的搜索是徒劳的。
解决方案
\
数据中的和之间真的有空格u
吗?这将导致解析问题,因此您需要先删除这些问题。您不能使用replace(" ","")
,因为字符串已经被格式化,就\\
好像它们不在u
.
获得正确的字符串后,您可以 (1) 使用 python 3 或 (2) 将 unicode 支持导入 2.7 或 (3)u""
在 2.7 中使用字符串...
在 Python 3 中:
mytext='\u0444 \u0430 \u0439 \u043b \u0435'
print(mytext)
蟒蛇 2.7:
from __future__ import unicode_literals
mytext='\u0444 \u0430 \u0439 \u043b \u0435'
print mytext
没有导入的 Python 2.7:
mytext=u'\u0444 \u0430 \u0439 \u043b \u0435'
# note the `u` before the string.
# In your example, you'd remove all those extra spaces
print mytext
输出:
ф а й л е
更新:如果您的输出与上面写的完全一样,那么您可以先修改字符串以去除多余的空格,然后对其进行评估以生成正确的格式。(感谢@lenz 对 . 的评论literal_eval
。)
import ast
original = "msg = u '\ u0444 \ u0430 \ u0439 \ u043b \ u0435'"
despaced = original.replace("u '","u'").replace("\\ ","\\")
# chop off original assignment with split() and assign to new variable
cleaned = ast.literal_eval(despaced.split("=")[1].strip())
print cleaned
输出:
ф а й л е
推荐阅读
- python - 我们如何通过提供数据框的函数使用回调在 Dash Table 中动态创建数据列
- javascript - 如何解决 React Native 中出现“folly/Portability.h”和“File .../main.jsbundle 不存在”的问题?
- r - ggplot里面的for循环
- angular - Angular 7 服务器响应未显示在列表中
- c++ - 如何使用访问者模式编写包含?[简单示例]
- java - do/while 循环的问题
- java - Google 协议缓冲区无法正确读取
- r - .tsv 文件中的表情符号正在破坏 read.table() 并添加行
- google-api - 我有 google+ 用户 ID。但现在 google+ 已关闭。那么如何使用 google+ id 获取电子邮件 ID?
- react-native - Android React Native 上的启动画面后出现白色闪烁