使用re.split()将字符串分割成列表

2 投票
2 回答
1639 浏览
提问于 2025-04-18 11:08

我正在使用这段代码把单词分开,放到一个列表里。这里用的while循环是为了去掉那些空白的元素,它们的内容就是一个空字符串''。问题是,即使我运行了while循环,列表里还是有一些空字符串的元素。我觉得这些空字符串是因为空格和缩进造成的。虽然while循环能去掉大约三分之二的空白,但我想知道有没有办法直接把单词分开?我不想要任何空的元素,因为当我后面对它们进行循环时,会出现字符串索引超出范围的错误,特别是当我引用mylist[i][0]的时候。

str = fpin.read()
mylist = re.split('[ \n]', str)
i = 0

while(i < len(mylist)):
if mylist[i] == '':
    del mylist[i]
i = i + 1

2 个回答

0

这是我用来把用空格分开的字符串变成列表的方法:

re.split(r'\s*', re.sub(r'^\s+|\s*$', '', input_string))

你代码的另一个问题是,不应该把变量命名为str,因为str是一个内置函数。

6

如果我没有理解错你的要求,其实这里不需要用正则表达式。你可以直接使用字符串的 split 方法。

>>> mystr = 'This     is  \n my awesome    \nstring'
>>> mystr.split()
['This', 'is', 'my', 'awesome', 'string']

撰写回答