继续获取类型错误

时间:2014-10-13 00:44:59

标签: python-2.7

我尝试运行以下代码,并且我不断收到如下错误。当我删除re.sub(r' / n','')时,我得到了下一个错误(& $ [^ \ s]。我知道这是错的正则表达式,但我不知道出了什么问题。请帮助我。我花了整整一夜才想出来。输入是一个字符串列表,从find_sentences(文本)返回:

def find_sentences(text):
    k = re.compile(r'[^\.]*\.[^\.]*succession[^\.]*\.[^\.]*\.')
    k2 = k.findall(text)
    if len(k2)>1:
        k3 = '######################################'.join(str(i) for i in k2)
    else:
        k3 = k2
    return k3 

q1=find_sentences(replacement)  #replacement is a text.
q2 = re.sub(r'\n','', q1)
q3 = re.sub(r'&#[^\s]+;','', q2)
q4 = re.sub(r' ','', q3)
q5 = re.sub(r'\\','',q4)
sentence = re.sub(r'<[^>]+>','',q5)

这是错误:

Traceback (most recent call last):
  File "C:\Users\Ahn\Desktop\text_module ver 1.py", line 135, in <module>
    dataValues=do_combination(fullPath)
  File "C:\Users\Ahn\Desktop\text_module ver 1.py", line 100, in do_combination
    q2 = re.sub(r'\n','', q1)
  File "C:\Python27\lib\re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer

1 个答案:

答案 0 :(得分:0)

findall函数返回字符串的列表。关键是它总是返回一个列表,所以我不确定你的len(k2)>1测试的重点是什么。

问题可能是k2是一个单元素列表(它与一个字符串不同)。看起来您可以将代码更改为以下内容,它可能会执行您想要的操作:

k2 = k.findall(text)
k3 = '######################################'.join(k2)
return k3 

然而,目前尚不清楚你想要什么,所以你必须进行实验。