【问题标题】:Importing csv file with line breaks to R or Python Pandas将带有换行符的 csv 文件导入到 R 或 Python Pandas
【发布时间】:2016-09-22 21:33:11
【问题描述】:

我有一个在列中包含换行符的 csv 文件:

"id","comment","x"
1,"ABC\"xyz",123
2,"xyz\"abc",543
3,"abc
xyz",483

ID 3,例如包含这样的换行符。

如何将其导入 python 或 R?另外,我不介意这些换行符是否被替换为空格。

【问题讨论】:

  • 看看这个,pandas.pydata.org/pandas-docs/stable/generated/…,你可以设置分隔符、标题和几乎所有你需要的东西。它只是df=pd.read_csv(path to file)
  • 换行不是问题,R的read.csv和pandas的@​​987654325@可以正确处理。但是,在您的文件中,双引号没有正确转义(应该是“”而不是“\”),这一点可能有问题。
  • 在 R 中,read.csv 存在转义问题,但 readr::read_csv 和 data.table::fread 处理得很好,无需进一步调整参数。
  • 我已经尝试了 R 的所有标准选项,例如 read.csv 和 pandas (read_csv),但没有一个有效。例如, test

标签: python r csv


【解决方案1】:

您还可以使用 python pandas 库read_csv 函数。确保指定转义字符。

import pandas as pd
df = pd.read_csv('path_to_csv', sep=',', escapechar='\\')

请注意第二个反斜杠转义第一个。它与 pandas 或 csv 无关。

【讨论】:

  • 很好的解决方案!
【解决方案2】:

Python 有内置的 CSV 阅读器,可以为您处理这些。见csv documentation。

import csv

with open(filename) as f:
    reader = csv.reader(f)
    csv_rows = list(reader)

【讨论】:

    【解决方案3】:

    问题似乎不是换行符,而是列中转义的大引号:\"。

    Python:zvone 的回答很好!

    import csv
    
    with open(filename) as f:
        reader = csv.reader(f)
        csv_rows = list(reader)
    

    R:readr::read_csv 无需更改任何默认值即可工作。

    【讨论】:

    • 对转义字符的伟大观察!最好的解决方案是使用pandas.read_csv(...,escapechar='\\')
    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多