如何使用Pandas正确读取含孟加拉语的空格分隔文本文件?
解决Pandas读取多空格分隔文本文件的问题
原代码的问题
- 列名带多余空格:你定义的列名(如
'anger ')和文件表头的实际列名(anger)不一致,导致数据匹配错位。 - 分隔符设置错误:用
sep=' '只能处理单个空格分隔,但文件是多个空格/制表符分隔,会导致读取结果混乱。 - 表头处理错误:设置
header=None会把文件第一行的表头当成数据行,再用自定义列名覆盖,导致数据行错误。
正确读取代码
推荐使用delim_whitespace=True自动处理任意数量的空白分隔符,同时修正列名:
import pandas as pd # 定义无多余空格的正确列名 cols = ['English Word', 'anger', 'anticipation', 'disgust', 'fear', 'joy', 'negative', 'positive', 'sadness', 'surprise', 'trust', 'Bengali Word'] # 读取文件:delim_whitespace=True处理多空格/制表符分隔,header=0指定第一行为表头 data = pd.read_csv('/content/gdrive/MyDrive/Bengali-NRC-EmoLex.txt', delim_whitespace=True, header=0, names=cols) display(data) # Colab中用display显示表格更美观
替代方案(使用正则分隔符)
如果遇到delim_whitespace不兼容的情况,可以用正则表达式匹配空白字符,指定engine='python':
import pandas as pd cols = ['English Word', 'anger', 'anticipation', 'disgust', 'fear', 'joy', 'negative', 'positive', 'sadness', 'surprise', 'trust', 'Bengali Word'] data = pd.read_csv('/content/gdrive/MyDrive/Bengali-NRC-EmoLex.txt', sep='\s+', engine='python', header=0, names=cols) display(data)
额外注意
如果文件编码不是UTF-8,可添加encoding='utf-8'(或对应编码)参数确保孟加拉语字符正常显示。
内容的提问来源于stack exchange,提问作者treeoid
相关产品推荐
相关产品推荐

