如何在熊猫中读取具有空格分隔值的文件
Posted
技术标签:
【中文标题】如何在熊猫中读取具有空格分隔值的文件【英文标题】:How to read file with space separated values in pandas 【发布时间】:2013-11-07 01:33:10 【问题描述】:我尝试将文件读入 pandas。 该文件具有以空格分隔的值,但空格数不同 我试过了:
pd.read_csv('file.csv', delimiter=' ')
但它不起作用
【问题讨论】:
How to make separator in read_csv more flexible wrt whitespace?的可能重复 【参考方案1】:如果您无法使用接受的答案进行文本解析(例如,如果您的文本文件包含不一致的行),那么值得尝试使用 Python 的 csv 库 - 这是使用用户定义的 Dialect 的示例:
import csv
csv.register_dialect('skip_space', skipinitialspace=True)
with open(my_file, 'r') as f:
reader=csv.reader(f , delimiter=' ', dialect='skip_space')
for item in reader:
print(item)
【讨论】:
这不是真的。它适用于 python 3.8 和 pandas。该问题要求在 pandas 中读取文本文件。 对不起 - 我已经更新了我的答案以解决这个问题。【参考方案2】:添加delim_whitespace=True
参数,它比正则表达式更快。
【讨论】:
应该添加它,并删除delimiter=' '
,因为它们在最近的版本中是互斥的。
@matanster: delimiter=' '
非常脆弱,它说只需要一个空格。没有制表符、新闻行、多个空格、不间断空格、这些的组合等。delimiter='\s+'
是 pandas 推荐的并且更强大。【参考方案3】:
您可以使用正则表达式作为分隔符:
pd.read_csv("whitespace.csv", header=None, delimiter=r"\s+")
【讨论】:
这有助于您将多个空格用作分隔符。在当前版本中,应添加engine = "python"
以避免出现警告。
抱歉在这里评论旧回复,r
之前的"\s+"
是什么意思?以上是关于如何在熊猫中读取具有空格分隔值的文件的主要内容,如果未能解决你的问题,请参考以下文章