Est*_*Lin 5 python unicode python-2.x
不确定这是不是问题,但我试图在unicode字符串的第一个字母上插入一个标签,似乎这不起作用.这可能是因为unicode索引的工作方式与常规字符串的工作方式不同吗?
现在我的代码是这样的:
for index, paragraph in enumerate(intro[2:-2]):
intro[index] = bold_letters(paragraph, 1)
def bold_letters(string, index):
return "<b>"+string[0]+"</b>"+string[index:]
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
<b>?</b>??? ???? ?????? ????? ?????? ?????? ?? ??? ????? ??? ????? ??? ???????.
Run Code Online (Sandbox Code Playgroud)
当我尝试插入HTML标记时,似乎unicode搞砸了.我试着弄乱插入位置,但没有取得任何进展.
示例所需输出(希伯来语从右到左):
>>>first_letter_bold("?????")
"????<\b>?<b>"
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这是针对Python 2的
你是对的,byte当你处理原始字节时,索引在每个上都有效,即String在Python(2.x)中.
要与Unicode数据无缝协作,首先需要让Python(2.x)知道您正在处理Unicode,然后执行字符串操作.你最终可以将它转换回原始字节以保持行为抽象,即你得到String并返回String.
理想情况下,您应该在代码的最开始将所有数据从UTF8原始编码转换为Unicode对象(我假设您的源编码是Unicode UTF8因为这是大多数应用程序现在使用的标准),并转换回fag末端的原始字节.代码,如保存到数据库,响应客户端等.一些框架可能会为您处理,以便您不必担心.
def bold_letters(string, index):
string = string.decode('utf8')
string "<b>"+string[0]+"</b>"+string[index:]
return string.encode('utf8')
Run Code Online (Sandbox Code Playgroud)
这也将为合作ASCII因为UTF8是一个超集的ASCII.通过阅读http://nedbatchelder.com/text/unipain.html,您可以了解Unicode的工作方式,特别是Python
Python 3.x String是一个Unicode对象,因此您不必显式执行任何操作.
| 归档时间: |
|
| 查看次数: |
2399 次 |
| 最近记录: |