【问题标题】:Reading ASCII with field delimiter as ctrl A and line delimiting as \n into python将字段分隔符作为 ctrl A 并将行分隔符作为 \n 读取到 python 中
【发布时间】:2017-02-22 09:57:40
【问题描述】:

我有一个 ASCII 数据集,它具有 ctrl A 字段分隔符和 \n 作为行分隔符。我希望将其读入 Python 并想知道如何处理它。特别是我希望能够将这些信息读入熊猫数据框。

我目前有;

import pandas as pd
input = pd.read_csv('000000_0', sep='^A')

然后我得到的错误是

_main__:1: ParserWarning: Falling back to the 'python' engine because the 'c' engine does 
not support regex separators; you can avoid this warning by specifying engine='python'.

然后我也不知道我是如何指定行分隔符的。

有什么想法吗?

提前致谢!

【问题讨论】:

  • 使用常规方法有没有问题?

标签: python pandas ascii


【解决方案1】:

使用pd.read_csv 和参数sep=chr(1)

from io import StringIO
import pandas as pd

mycsv = """a{0}b{0}c
d{0}e{0}f""".format(chr(1))


pd.read_csv(StringIO(mycsv), sep=chr(1))

   a  b  c
0  d  e  f

【讨论】:

    【解决方案2】:

    不要提及“^A”,而是提及十六进制代码。它的作用就像一个魅力

    import pandas as pd
    data = pd.read_csv('000000_0', sep='\x01')
    

    【讨论】:

      【解决方案3】:

      如果CTRL+A 指的是SOH 的ASCII 码(标题的开头),请先尝试在换行符上拆分数据以获取行,然后在"\x01" 上拆分这些数据,这是十六进制代码SOH。但是没有任何代码、数据、预期结果或错误信息,这主要是猜测。

      【讨论】:

        【解决方案4】:

        试试这个

        reader = csv.reader(open("/Users/778123/Documents/Splunk/data/DMS3^idms_core^20200723140421.csv",newline=None), delimiter=',')
        
        print(reader)
        
        writer = csv.writer(open("/Users/778123/Documents/Splunk/data/DMS3^idms_core^test.csv", 'w'), delimiter=chr(1), quoting=csv.QUOTE_NONNUMERIC)
        
        writer.writerows(reader)
        

        【讨论】:

          【解决方案5】:

          Python 的 csv 库非常擅长读取分隔文件;-)

          以上面链接的文档为例:

          import csv
          with open('eggs.csv', 'rb') as csvfile:
              spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
              for row in spamreader:
                  print ', '.join(row)
          

          这将自动遍历文件中的行(从而处理换行符),并且您可以设置分隔符,如图所示。

          【讨论】:

          • 问题是 OP 如何在他们的文件中正确写入特定的分隔符('\x01',通常输入为 ctrl+a),您的答案没有解决。为了使这个带有csv 的示例对这个问题有用,请展示一个带有该分隔符的示例。
          猜你喜欢
          • 2014-11-05
          • 2013-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-18
          • 1970-01-01
          • 2012-08-09
          • 1970-01-01
          相关资源
          最近更新 更多