Skip to main content
 首页 » 编程设计

python,我无法在重新搜索后保存特殊字符,例如 θæŋ

2025年05月04日11lovecherry

在进行搜索后,我无法保存特殊字符,例如 θæŋ。

我正在保存到 Django 模型文本字段。在管理页面中,我得到的不是 θæŋkfəli,而是

\xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li 

是re.search的错误吗? 是管理员的错误吗? 我是不是存错了?

如何搜索所需的字符串部分并将其保存在带有 'θæŋ' 字符的模型的文本字段中?

lines='title="Listen to audio" /></a><span class="pr">/<span class="unicode">ˈ</span>θæŋkfəli/</span> <span class="fl">adverb' #the string which i wan to save exactly as it is, Django saves it correctly 
 
liness=smart_str(lines, encoding='utf-8', strings_only=False, errors='replace') # saves correctly 
linesu=smart_unicode(lines, encoding='utf-8', strings_only=False, errors='replace')  # saves correctly 

在尝试搜索字符串 θæŋkfəli 的一部分后,Django 不会将其保存在所需的特殊字符中。我得到的不是 θæŋkfəli,而是“\xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li”

stryc=re.compile('<span\s*class=\"pr\">\s*/\s*<span\s*class="unicode\">(?P<Pronun>.*)<span\s*class=\"fl\">', re.DOTALL) 
                    #\s+/\s+<span class=\"unicode\">\s+[\\a-zA-Z0-9\s]+/\s+</span> ' 
strys=re.search(stryc, linesu) 
 
Pronun=stryWordcs.groups('Pronun') 
text=Pronun.encode('utf-8') # does not covert unicode to letters 
Pronun=smart_str(Pronun, encoding='utf-8', strings_only=False, errors='replace') # also does not covert unicode to letters 
a=Pronunciation(field=Pronun) # or field=text 
a.save() 
# Pronun=  "θæŋkfəli", nevertheless it is saved as  \xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li or in unicode 

如果我不使用 smart_str,我会得到“\u03b8\xe6\u014bkf\u0259li”

如果我尝试在 lines 或 liness 中搜索,我无法找到 θæŋkfəli 由于特殊字符 ˈ(顶部的小棒 =\xcb\x88 =\u02c8)

问候, 金塔尔

请您参考如下方法:

当您看到 "\xce\xb8\xc3\xa6\xc5\x8bkf\xc9\x99li 时,您看到的实际上与 θæŋkfəli 相同,但采用十六进制表示法。类似地,您可以表示与

相同的一组字符

U+03B8 U+00E6 U+014BkfU+0259li

这是因为文本存储为 unicode 字符串。要查看这实际上是相同的,请尝试将您的文本(带有特殊字符)复制到 this conversion website 的顶部框中并点击转换。 Python 能够 handle unicode但根据您使用什么来显示字符,它会以不同的方式出现。

我不完全确定你的问题是什么。如果您担心您的正则表达式能够准确匹配 unicode 字符,python 的 re 模块有一个选项 make it work differently with unicode .

如果您担心此文本的显示方式,这将根据您尝试显示它的方式而有所不同,您需要更具体地说明您的问题。

不过我可以向您保证,Django 可以很好地存储您的字符串。