我有一个数据框,其中一列包含以开头的值
b'\xe0\xa4\x9d\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4...'
这是我运行df.head(10)
但是当我使用其索引号打印此单元格时,我得到的值由这样的两个反斜杠分隔。
t = df['text'][461]
"b'\\xe0\\xa4\\xb8\\xe0\\xa5\\x8d\\xe0\\xa4\\xb5\\xe0\\xa4\\xb0\\xe0\\xa5\\x8d\\xe0\\xa4\\xa3\\xe0\\xa4\\xb0\\xe0\\xa5\\x87\\xe0\\xa4\\x96\\xe0\\xa4\\xbe ..."
双引号告诉我,我的pandas数据框将其作为字符串而不是字节对象。
当我在互联网上搜索时,我才知道这是包含十六进制代码的python字节对象。
我想将此列转换为非拉丁UTF-8字符。 我试图做以下事情。
df['text'][461].decode()
在这种情况下,我会得到
错误 AttributeError: 'str' object has no attribute 'decode'
print ("\xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x82")
当我从数据框中手动复制时,得到了
मà¥à¤
bytes.fromhex('e0a4aee0a588e0a482').decode('utf-8')
在这种情况下,我必须手动删除前面代码中的所有\x
,然后得到正确的印地语(非拉丁语)单词,即
'मैं'
我认为我需要做两件事。
当我尝试使用bytes(df['text'][461], 'utf-8')
将对象转换为字节对象时,它只接受原始的十六进制代码字符串,并向其添加b'以使其成为字节对象,此后什么也没有发生。我仍然留下相同的/ x对象。
如何将这些值转换为印地语(非拉丁utf-8)?
我现在无所适从。我是编码,解码和十六进制值的新手。
编辑1
使用bash shell,我能够从文件中删除所有多余的"
,并将我的专栏保存到其他文本文件中。在Bash上运行file file_name.txt
时,我得到了ASCII Text
作为文件类型。而且,当我使用iconv
从ASCII to UTF-8
更改格式时,我仍然得到相同的文件,没有任何错误。
鉴于iconv
无法正常工作,如何将该ASCII文件转换为UTF-8?
编辑2
在Linux中使用ascii2uni
命令,我得到了另一个文件,其序列类似于b'पà¥à¤°à¥ हॠशिवà¤à¤à¥à¤¤à¥à¤ à¤à¥ हर मनà¥à¤à¤¾à¤®à¤¨à¤¾'
当我在此上使用bytes.decode()时,出现以下错误。
SyntaxError: bytes can only contain ASCII literal characters.
反正我可以去印地语吗?