Python 如何将列表的多个元素传递给re.split()函数?

Python 如何将列表的多个元素传递给re.split()函数?,python,regex,python-2.7,Python,Regex,Python 2.7,使用“print”时,它工作得非常好,但是当我尝试在re.split()中执行同样的操作时,我得到一个错误“TypeError:expected string or buffer”为什么不只是: f = open('sentences.txt') lines = [line.lower() for line in f] print lines[0:5] words = re.split("\s+", lines[0:5]) split函数需要一个字符串,然后根据正则表达式将其拆分为子字符串并作

使用“print”时,它工作得非常好,但是当我尝试在re.split()中执行同样的操作时,我得到一个错误“TypeError:expected string or buffer”

为什么不只是:

f = open('sentences.txt')
lines = [line.lower() for line in f]
print lines[0:5]
words = re.split("\s+", lines[0:5])
split函数需要一个字符串,然后根据正则表达式将其拆分为子字符串并作为列表返回。通过一份清单没有多大意义。如果您希望它获取字符串列表并单独拆分每个字符串元素,然后返回字符串列表,那么您必须自己执行以下操作:

words = re.split("\s+", ''.join(lines))

我认为您正在搜索,即:


注:

不需要使用
re
模块,
split()
就足够了。

如您所见,您在函数调用中得到了
TypeError
,这意味着您传递了函数所期望的错误参数。所以你需要考虑你要通过什么

如果您有调试器或IDE,您可以通过

words = "".join(lines[0:5]).split()
返回

print(type(lines[0:5]))
在这里,我使用a单步遍历
并分别处理每一行。

您的
重新拆分('\s+',line)
行拆分()等价,因此您可以编写

words = [re.split('\s+', line) for line in lines]

请参阅。

也许您可以使用五个单独的字符串调用
split
五次,而不是将五个字符串传递到
split
。您想做什么?听起来有点像一个字符串。
<class 'list'>
words = [re.split('\s+', line) for line in lines]
words = [line.split() for line in lines]