为什么Python在使用re时会给出错误:“TypeError:expected string or buffer”?

时间:2013-07-16 18:40:49

标签: regex python-2.7 typeerror

我不知道我犯了什么小错误,但我觉得这里有一个简单的解决方案,我没有得到。从日志文件中,我试图只读取以“start”结尾的行。每行都有很多信息,所以我简化了以下内容: “(。*)启动$”,我认为这是正确的 字符串的示例是:

05/06/2013 12:06:58 AM | null | com.skldfjs : start

import pandas as pd
s=pd.read_csv('Log_file.csv')
s
import re
items=re.findall("(.*)start$",s,re.MULTILINE)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Anaconda\lib\re.py", line 177, in findall
    return _compile(pattern, flags).findall(string)
<b>TypeError: expected string or buffer</b>

有谁知道如何解决这个或为什么会发生这种情况? 谢谢! 凯尔

1 个答案:

答案 0 :(得分:0)

由于pandas.read_csv()返回一个非字符串对象,而不是类似excel的文件,因此发生此错误。

由于我从未使用过熊猫,因此无法提供更多信息。但是,如果没有绝对需要的pandas,您可以尝试将该文件作为纯文本文件读取,然后使用re.findall()来解析它。

with open("file.csv") as f:
    content = f.read()

regex = r"(.*)start$"
items = re.findall(regex, content, re.MULTILINE)