Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用re.split()将字符串分隔为列表_Python_Regex_Python 3.x - Fatal编程技术网

Python 使用re.split()将字符串分隔为列表

Python 使用re.split()将字符串分隔为列表,python,regex,python-3.x,Python,Regex,Python 3.x,我正在使用此代码将单词分隔成一个列表。while循环用于删除出现的任何空格,这些空格将是只有一个“”的元素。问题是,即使在我运行while循环之后,仍然有只包含“”的元素。我相信这是由于空格和缩进造成的。while循环确实消除了大约2/3的这些空间。有没有办法把单词分开?我不想要任何空白元素,因为当我稍后在它们上运行循环时,当我引用mylist[I][0]时,会得到超出范围的字符串索引 str = fpin.read() mylist = re.split('[ \n]', str) i = 0

我正在使用此代码将单词分隔成一个列表。while循环用于删除出现的任何空格,这些空格将是只有一个“”的元素。问题是,即使在我运行while循环之后,仍然有只包含“”的元素。我相信这是由于空格和缩进造成的。while循环确实消除了大约2/3的这些空间。有没有办法把单词分开?我不想要任何空白元素,因为当我稍后在它们上运行循环时,当我引用
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
str=fpin.read()
mylist=re.split(“[\n]”,str)
i=0
而(i
除非我误解了您的规范,否则这里不需要正则表达式。您可以只使用字符串的
split
方法

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

这是我将一个空格分隔的字符串拆分为列表所做的操作:

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

代码的另一个问题是,您不应该使用str作为变量名,因为str是一个内置函数。

因为还没有人直接提到过它:空字符串是两个空格相邻时产生的,其间没有任何空格。下面的答案将告诉您如何处理这个问题。一般来说,在Python中,通常建议创建一个列表的副本,其中包含您想要的内容,而不是在现有列表上循环并从中删除内容。简单地使用
.split()
将占用多个空白字符,因此您不需要这样做,但下面是一个如何使用所需内容创建副本的示例:
newlist=[x代表mylist中的x,如果x]