Python中re.split的TypeError
我有个关于在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",'')