Python中re.split的TypeError

0 投票
1 回答
612 浏览
提问于 2025-04-18 11:10

我有个关于在Python中使用re模块的re.split函数的问题。首先,records这个列表里有100条数据。当我尝试获取特定的数据时,代码是可以正常工作的:

content = records[0].get("AB") #I'm getting the article content from pubmed btw
nom = []
nom = re.split(r"\B\s(?=[^\s:]+:)", content) #trying to split into paragraphs
print nom

但是,如果我尝试用for循环来获取全部数据,就出现了类型错误,提示我需要一个字符串或缓冲区。这段代码是:

for record in records:
    content = record.get("AB")
    nom = []
    nom = re.split(r"\B\s(?=[^\s:]+:)", content)
    print nom

错误信息是:

追踪(最近的调用在最后):
文件 "", 第4行,
文件 "/usr/lib64/python2.6/re.py",第167行,在split中
return _compile(pattern, 0).split(string, maxsplit)
TypeError: expected string or buffer

有没有人能告诉我为什么会出现这个问题?我该怎么做才能正确获取全部数据呢?

1 个回答

2

所以,你知道 records[0] 是没问题的。

很明显,其他99行中的某一行让它出错了。我猜是最后一行。一个简单粗暴的解决办法是把你的 get 方法改成指定一个字符串作为默认值,而不是默认的 None

content = record.get("AB",'') 

撰写回答