python - Pandas :忽略新行作为 read_csv 中的分隔符

标签 python pandas

我有一个包含分隔符 $$$Field$$$ 的输入字符串。该字符串有一些行。我需要返回字符串中所有项目的列表,仅由 $$$Field$$$ 分隔。

在下面的示例中,我应该接收作为输出的 ['Food', 'Fried\nChicken', 'Banana']。但是,它似乎也将新行解释为分隔符,所以我得到的不是列表而是表格。我怎样才能忽略这些新行,以便只返回一个列表?

import pandas as pd
from pandas.compat import StringIO

temp=u"""Food$$$Field$$$Fried
Chicken$$$Field$$$Banana"""
df = pd.read_csv(StringIO(temp), sep='\$\$\$Field\$\$\$',engine='python')
print (df)

我使用 pandas 的唯一原因是因为这个字符串实际上是一个巨大的 .csv 文件,我不能一次在内存中读取所有这些,但是流式处理是可以接受的。

最佳答案

由于您不希望以表格格式存储信息,因此我认为不需要 DataFrame。相反,每次遇到 '$$$Field$$$' 时,分块读取您的字符串并产生缓冲区。

改编自https://stackoverflow.com/a/16260159/4410590 :

def myreadlines(f, newline):
    buf = ""
    while True:
        while newline in buf:
            pos = buf.index(newline)
            yield buf[:pos]
            buf = buf[pos + len(newline):]
        chunk = f.read(4096)
        if not chunk:
            yield buf
            break
        buf += chunk

然后调用函数:

> for x in myreadlines(StringIO(temp), '$$$Field$$$'):
      print repr(x)

u'Food'
u'Fried\nChicken'
u'Banana'

关于python - Pandas :忽略新行作为 read_csv 中的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534703/

相关文章:

python - 405 客户端错误 : Method Not Allowed for url: https://rinkeby. infura.io

python - Selenium WebDriverException : Message: unknown error: cannot determine loading status from unknown error: missing or invalid 'entry.level'

python - 如何在sklearn grid search中使用log loss

python - 过滤 Pandas 数据框的最干净方法?

python - Pandas:复杂的聚合问题

python - 获取列值出现后的所有行 pandas

python - 使用定义的 URLconf,Django 尝试了这些 URL 模式

python - Sympy 中符号的 boolean 运算

python - Pandas 数据框。消除列中匹配某些条件的行

python - pandas如何比较2个数据帧的行,无论顺序如何