gpt4 book ai didi

python - 将其中包含非 ASCII 符号的 Unicode 对象转换为字符串对象(在 Python 中)

转载 作者:太空狗 更新时间:2023-10-30 02:14:09 25 4
gpt4 key购买 nike

我想发送中文字符以供在线服务翻译,并返回生成的英文字符串。我正在使用简单的 JSON和 urllib。

是的,我宣布。

# -*- coding: utf-8 -*-

在我的代码之上。

现在,如果我向 urllib 提供一个字符串类型的对象,则一切正常,即使该对象包含 Unicode 信息。我的函数称为 translate

例如:

stringtest1 = '無與倫比的美麗'

print translate(stringtest1)

导致正确的翻译和做

type(stringtest1) 

确认这是一个字符串对象。

但是如果这样做

stringtest1 = u'無與倫比的美麗'

并尝试使用我的翻译功能时出现此错误:

  File "C:\Python27\lib\urllib.py", line 1275, in urlencode
v = quote_plus(str(v))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-8: ordinal not in range(128)

经过一番研究,这似乎是一个普遍的问题:

现在,如果我输入一个脚本

stringtest1 = '無與倫比的美麗' 
stringtest2 = u'無與倫比的美麗'
print 'stringtest1',stringtest1
print 'stringtest2',stringtest2

它的执行返回:

stringtest1 無與倫比的美麗
stringtest2 無與倫比的美麗

但只需在控制台中输入变量:

>>> stringtest1
'\xe7\x84\xa1\xe8\x88\x87\xe5\x80\xab\xe6\xaf\x94\xe7\x9a\x84\xe7\xbe\x8e\xe9\xba\x97'
>>> stringtest2
u'\u7121\u8207\u502b\u6bd4\u7684\u7f8e\u9e97'

我明白了。

我的问题是我无法控制要翻译的信息如何进入我的功能。看来我必须以 Unicode 形式引入它,函数不接受它。

那么,如何将一件事转换成另一件事?

我读过 Stack Overflow 问题 Convert Unicode to a string in Python (containing extra symbols) .

但这不是我想要的。 urllib 接受字符串对象但不接受 Unicode 对象,两者包含相同的信息

好吧,至少在我向其发送未更改信息的 Web 应用程序看来,我不确定它们是否仍然是 Python 中的等效内容。

最佳答案

当您获得一个 unicode 对象并希望从中返回一个 UTF-8 编码的字节字符串时,请使用 theobject.encode('utf8')

您不知道传入对象是 str 还是 unicode 似乎很奇怪——您肯定控制了调用站点 也有那个功能?!但如果确实如此,无论出于何种奇怪的原因,您可能需要类似的东西:

def ensureutf8(s):
if isinstance(s, unicode):
s = s.encode('utf8')
return s

它只有条件地编码,也就是说,如果它接收到一个unicode对象,而不是如果它接收到的对象已经是一个字节串。无论哪种情况,它都会返回一个字节字符串。

顺便说一句,你的部分困惑似乎是因为你不知道在解释器提示符下输入一个表达式就会显示它的repr,这是不一样的效果你得到 print;-).

关于python - 将其中包含非 ASCII 符号的 Unicode 对象转换为字符串对象(在 Python 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669436/

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