Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这是'\xe2\x80\x93';和'-';用python?我如何将所有内容更改为后者?_Python_Python 2.7_Encode - Fatal编程技术网

什么';这是'\xe2\x80\x93';和'-';用python?我如何将所有内容更改为后者?

什么';这是'\xe2\x80\x93';和'-';用python?我如何将所有内容更改为后者?,python,python-2.7,encode,Python,Python 2.7,Encode,我在使用apache.beam管道将数据写入bigquery时遇到错误(字段字符串\u值遇到非ASCII字符串“\xe2\x80\x93”:“ASCII”编解码器无法解码字节0xe2) 我从http请求获取数据,响应体包含“\xe2\x80\x93”而不是“–”(en-dash) 问题1: “\xe2\x80\x93”和“–”(en-dash)的区别是什么,而它们的打印是相同的 >>> a='\xe2\x80\x93' >>> a '\xe2\x80\x93'

我在使用apache.beam管道将数据写入bigquery时遇到错误(字段字符串\u值遇到非ASCII字符串“\xe2\x80\x93”:“ASCII”编解码器无法解码字节0xe2)

我从http请求获取数据,响应体包含“\xe2\x80\x93”而不是“–”(en-dash)

问题1: “\xe2\x80\x93”和“–”(en-dash)的区别是什么,而它们的打印是相同的

>>> a='\xe2\x80\x93'
>>> a
'\xe2\x80\x93'
>>> print a
–
>>> b='–'
>>> b
'–'
>>> print b
–
问题2: 如何将“\xe2\x80\x93”更改为“–”(英文破折号)?预期结果是:

>>> a='\xe2\x80\x93'
>>> (some operation to a here)
>>> a
'–'
>>> print a
–
我之所以要进行更改,是因为我发现“–”(en-dash)可以成功写入bigquery,而“\xe2\x80\x93”会抛出上述错误

还有其他字符有这个问题,所以我不能只替换“\xe2\x80\x93”

谢谢。

b“\xe2\x80\x93”
不是ASCII码;由于ASCII为7位,一个明显的指标是所有这些字节都设置了最高位(值128或更高)。它是UTF-8,并解码为一个字符,代码点0x2013,这是一个。at 0x2d是ASCII中存在的类似字符,但替换它只是一种近似值。这就是说,这些近似值可以在例如中获得
iconv
不在Python标准库中,但在PyPI中作为模块提供


听起来你好像知道这些应该是破折号;在这种情况下,您可能只需要调用
a.decode('UTF-8')
来生成正确的unicode字符串

您的
-
b
)是一个常规的ASCII连字符减号。另一个是短跑。。听起来很傻,但是为什么不
如果a=='\xe2\x80\x93:a='-'
?@deceze谢谢,但是我能把“a”改成一个破折号(字符串,而不是字节)吗?@SergioPulgarin谢谢,“\xe2\x80\x93”只是其中一种情况,其他字符可能会抛出类似的错误,我看到了,然后我会说跟进我发布的答案和他们提供的链接,用正确的方法去做。