【发布时间】:2019-06-19 06:31:02
【问题描述】:
我在数据流 (apache beam) 中运行一个脚本,它在 python 2.7.12 中运行,并使用 unicode 字符串进行一些文本处理。
在处理中,我执行以下操作,其中 noun 和 phrase 是 unicode(我认为...)
# -*- coding: utf-8 -*-
...
key = u"{}_{}".format(
noun, phrase.replace(u" ", u"_")
)
但是它会产生 ascii 解码错误
'ascii' codec can't decode byte 0xe2 in position 1: ordinal not in range(128)
我可以进行调试并获取用作 noun 和 phrase 的字符串的代表,但我目前没有它们,因为我的日志没有输出他们。
我不明白 ascii 解码错误,当我认为我非常明确我想要 unicode 中的所有内容时!
您能否提供一些提示,或者我应该返回有关输入字符串的更多信息?
【问题讨论】:
-
noun和phrase是什么?听起来phrase有字符0xe2。在latin1中,这是一个â,它不是真正的 ascii 字符。 -
但是当我明确地创建一个 unicode 字符串 @FHTMitchell 时这有关系吗
-
是的——python只自动编码ascii
-
你如何创建名词和短语?
-
noun或phrase或两者都不是 Unicode 字符串。.decode()他们首先使用正确的编解码器。 Python 2 将尝试自动将字节字符串解码为 Unicode 字符串,但将使用ascii编解码器。 Python 3 不会自动尝试,所以你会立即发现错误,即使字符串是 ASCII-only。
标签: python python-2.7 unicode dataflow