使用re.split()将字符串分割成列表
我正在使用这段代码把单词分开,放到一个列表里。这里用的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']