Bash相当于Python的字符串文本,用于utf字符串转换

2024-06-16 12:27:48 发布

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

我正在编写一个bash脚本,它需要解析包含特殊字符的html,比如@!'ó。目前我运行了整个脚本,它忽略这些查询或在这些查询上失败,因为它们是以十进制unicode从服务器返回的,如下所示:'。我已经知道了如何解析和转换为十六进制,并将其加载到python中,以将它们转换回它们的符号,我想知道bash是否可以在本机上完成最后的转换。python中的简单示例:

print ur"\u0032" ur"\u0033" ur"\u0040"

打印出来

^{pr2}$

我能在Bash中获得同样的结果吗?我已经调查过iconv,但我不认为它能满足我的需要,或者更可能的是我不知道怎么做。在

以下是一些相关信息:

Python String Literals

Hex to UTF conversion in Python

下面是一些预期投入产出的例子。在

Ludwig van Beethoven - 5th Symphony and 6th Symphony ''Pastoral'' - Boston Symphony Orchestra - Charles Munch

Ludwig van Beethoven - 5th Symphony and 6th Symphony ''Pastoral'' - Boston Symphony Orchestra - Charles Munch

АлисА (Alisa) - Мы вместе. ХХ лет (My vmeste XX let)

АлисА (Alisa) - Мы вместе. ХХ лет (My vmeste XX let)


Tags: and脚本bashmybostonvanludwigorchestra
2条回答

Bash中的printf内置不支持Unicode代码,但是外部的printf(至少在我基于GNU的系统上)支持:

$ /usr/bin/printf "\u0410\u043b\u0438\u0441\u0410"
АлисА

或者这样,它从路径中选择printf,以防它不在/usr/bin中:

^{pr2}$

或者

$ env printf "\u0410\u043b\u0438\u0441\u0410"
АлисА

可能的解决方案,例如:

$ function conv() { echo $* | python -c 'import re, sys; print re.sub(r"&#(\d+);", lambda x: unichr(int(x.group(1))), sys.stdin.read()).rstrip()' ; }
$ conv 'АлисА (Alisa)' 
АлисА (Alisa)

相关问题 更多 >