gpt4 book ai didi

Python:引用unicode字符串索引的正确方法

转载 作者:太空狗 更新时间:2023-10-30 00:34:44 25 4
gpt4 key购买 nike

不确定这是否正是问题所在,但我试图在 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:]

我得到这样的输出:

<b>?</b>?רך האחד וישתבח הבורא בחכמתו ורצונו כל צבא השמים ארץ וימים אלה ואלונים. 

当我尝试插入 HTML 标记时,unicode 似乎被弄乱了。我尝试弄乱插入位置,但没有取得任何进展。

所需输出示例(希伯来语从右到左):

>>>first_letter_bold("הקדמה")
"הקדמ<\b>ה<b>"

顺便说一句,这是针对 Python 2 的

最佳答案

你是对的,当你处理原始字节时,索引作用于每个字节,即 Python(2. x).

要无缝处理 Unicode 数据,您需要首先让 Python(2.x) 知道您正在处理 Unicode,然后进行字符串操作。您最终可以将其转换回原始字节以保持抽象的行为,即您获得 String 并返回 String

理想情况下,您应该将所有数据从 UTF8 原始编码转换为 Unicode 对象(我假设您的源编码是 Unicode UTF8,因为是当今大多数应用程序使用的标准)在代码的最开始,并在代码的最后转换回原始字节,例如保存到数据库、响应客户端等。某些框架可能会为您处理这些,因此您不必不必担心。

def bold_letters(string, index):
string = string.decode('utf8')
string "<b>"+string[0]+"</b>"+string[index:]
return string.encode('utf8')

这也适用于 ASCII,因为 UTF8ASCII 的超集。通过阅读 http://nedbatchelder.com/text/unipain.html,您可以更好地了解 Unicode 和 Python 的工作原理。

Python 3.x String 是一个 Unicode 对象,因此您无需显式执行任何操作。

关于Python:引用unicode字符串索引的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39230021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com