Python 3.x 如何将数据框中的一个特定文本列转换为';utf-8';使用蟒蛇3

Python 3.x 如何将数据框中的一个特定文本列转换为';utf-8';使用蟒蛇3,python-3.x,ascii,Python 3.x,Ascii,我有一个数据框架,其中有多列,一列包含从各种链接中刮取的文本。 我试图将该列转换为utf-8,但没有成功 我的做法如下: df = pd.read_excel('data.xlsx',encoding=sys.getfilesystemencoding()) df['text'] = df['text'].apply(lambda x: x.encode('utf-8').strip()) print(df['text']) 我得到一些ascii码的文本: b“b”#谢谢你,能成为 df =

我有一个数据框架,其中有多列,一列包含从各种链接中刮取的文本。 我试图将该列转换为utf-8,但没有成功

我的做法如下:

df = pd.read_excel('data.xlsx',encoding=sys.getfilesystemencoding())
df['text'] = df['text'].apply(lambda x: x.encode('utf-8').strip())
print(df['text'])
我得到一些ascii码的文本:

b“b”#谢谢你,能成为

df = pd.read_excel('data.xlsx',encoding=sys.getfilesystemencoding())
df['text'] = df['text']
print(df['text'])
我明白了:

谢谢,很高兴来到这里

df['text'] = df['text'].apply(lambda x: x.decode('utf-8').strip())
AttributeError:“str”对象没有属性“decode”

我尝试了2-3种方法,但都不起作用。有其他选择吗


使用Python3.6和jupyter笔记本。

假设您为示例编写的第二行是
df['text']=df['text']
'
结尾。换句话说,
b'.\xe2\x80\x99很高兴来到这里。

由于某些原因,您的字节码已转换为字符串,因为您在尝试解码时看到
AttributeError:'str'对象没有属性'decode'
(理想情况下,最好不要陷入这种情况,请参阅以获取一些看起来相关的建议。唉,继续使用您所拥有的…
我认为在这一点上,您可以删除字符串开头的
b'
,以及远端的
。请注意,这将导致反斜杠被转义,因此除了现在以正确的方式将字节码解码为字符串外,还需要处理。使用基于的方法可以转义和解码e字节码

将其与您显示为
df['text']
的内容结合起来(有点像@rolf82在注释中所示),当
df['text']=df['text']
并且它在开头是一个字符串时,从您拥有的内容转换为:

a=“b'#谢谢,很高兴来到这里”
#但我们只需要“”之间的部分。
s=字节(r“#谢谢,很高兴来到这里”,“utf-8”)
导入编解码器
打印(编解码器。转义解码[0]。解码(“utf-8”))
这就产生了:

#Thank you, it’s good to be here
这就是我们想要的

现在将其与Pandas集成需要一些额外的东西,因为我们不能简单地通过在前面添加
r
来说这是一个原始字符串。基于和,似乎使用
r
在前面强制转换为原始字符串可以替换为
。encode('unicode-escape')。decode()
,如:

“#谢谢,很高兴来到这里”。encode('unicode-escape')。decode()
总而言之,我将用以下内容替换您的第二行:

导入编解码器
df['text']=df['text'].apply(lambda x:codecs.escape_decode(字节(x[2:-1])。编码('unicode-escape')。解码(),“utf-8”))[0]。解码('utf-8')。strip()

如果这不起作用,也请尝试在
.encode('unicode-escape')
之后关闭
.decode()
,即:

```python
import codecs
df['text'] = df['text'].apply(lambda x: codecs.escape_decode(bytes(x[2:-1].encode('unicode-escape'), "utf-8"))[0].decode('utf-8').strip())

如果你跳过
df['text']=df['text'].apply(lambda x:x.encode('utf-8').strip())
?如果你只是把
df['text']
作为单元格中的最后一行,你会看到什么?更新了上面的问题,因为它是字节,你不应该编码而是解码:
b“#谢谢,它\xe2\x80\x99很好”。解码(“utf-8“
gives
”#谢谢,这很好“
df['text']=df['text'].apply(lambda x:x.decode('utf-8').strip())AttributeError:'str'对象没有属性'decode',第一个真的显示了
b“b'#谢谢你
?有双b的吗?