如何在熊猫中读取具有空格分隔值的文件

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+" 是什么意思?

以上是关于如何在熊猫中读取具有空格分隔值的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将同时具有逗号和空格分隔符的 CSV 文件转换为只有空格分隔符的 csv

在R中读取具有多个空格作为分隔符的文本文件

如何在 MATLAB 中读取带有“/”和空格的分隔文件

读取由空格分隔的值的多行文本

如何在 C++ 中读取由空格分隔的字符串? [关闭]

如何在 C++ 中读取由空格分隔的十六进制字节数据