【问题标题】:How to read file with space separated values in pandas如何在熊猫中读取具有空格分隔值的文件
【发布时间】:2013-11-07 01:33:10
【问题描述】:

我尝试将文件读入 pandas。 该文件具有以空格分隔的值,但空格数不同 我试过了:

pd.read_csv('file.csv', delimiter=' ')

但它不起作用

【问题讨论】:

标签: python pandas csv


【解决方案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+" 是什么意思?
猜你喜欢
  • 2017-10-21
  • 2014-08-27
  • 1970-01-01
  • 2020-04-09
相关资源
最近更新 更多