我有一个数据框,其中多列和一列包含来自各种链接的剪贴文本。我试图将该列转换为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'#谢谢您,\ xe2 \ x80 \ x99s很高兴成为...
df = pd.read_excel('data.xlsx',encoding=sys.getfilesystemencoding())
df['text'] = df['text']
print(df['text'])
我得到的文字:
b'#谢谢您,\ xe2 \ x80 \ x99s很高兴来到这里...。
df['text'] = df['text'].apply(lambda x: x.decode('utf-8').strip())
AttributeError:“ str”对象没有属性“ decode”
我尝试了2-3种方法,但是没有用。还有其他选择吗?
使用Python 3.6和jupyter笔记本。
问题来源:stackoverflow
假设您为第二行是df ['text'] = df ['text']的示例编写的内容以
'结尾。换句话说,`b'#谢谢您,\ xe2 \ x80 \ x99s很高兴来到这里....'
出于某种原因,您将字节码转换为字符串,因为尝试解码时会看到AttributeError:'str'对象没有属性'decode'
。(理想情况下,最好不要陷入这种情况,请参阅此处以获取一些相关的建议。las,继续您所拥有的...) 我想在这一点上您可以删除b'在字符串的开头,在末尾的
'`,然后类型转换回字节码。请注意,这将导致反斜杠转义,因此除了现在以适当的方式将字节码解码为字符串外,还需要处理。使用基于此处的方法,您可以转义并解码字节码。
当df ['text'] = df ['text']且它是一个df ['text'] = df ['text']
时,将其与显示为df ['text']`的内容放在一起(类似于注释中的@ rolf82所示)。开头的字符串,从您所拥有的转换将是这样的:
a = "b'#Thank you, it\xe2\x80\x99s good to be here'"
# But we only want the parts between the ''.
s = bytes(r"#Thank you, it\xe2\x80\x99s good to be here","utf-8")
import codecs
print(codecs.escape_decode(s)[0].decode("utf-8"))
这给出了:
#Thank you, it’s good to be here
这就是我们想要的。
现在将其与Pandas集成将需要一些额外的东西,因为我们不能通过在前面加上r
来简单地说这是一个原始字符串。根据此处和此处,似乎可以使用.encode('unicode-escape')。decode()
代替在前面使用r
强制转换为原始字符串,例如:
"#Thank you, it\xe2\x80\x99s good to be here".encode('unicode-escape').decode()
因此,将所有内容放在一起,我将用以下内容替换您的第二行:
import codecs
df['text'] = df['text'].apply(lambda x: codecs.escape_decode(bytes(x[2:-1].encode('unicode-escape').decode(), "utf-8"))[0].decode('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())
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。