Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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中的正则表达式拆分_Python_Python 3.x - Fatal编程技术网

Python中的正则表达式拆分

Python中的正则表达式拆分,python,python-3.x,Python,Python 3.x,我对Python比较陌生,我正在尝试使用re拆分字符串。 我做了一些研究,遇到了一些例子,我试了一下。它们似乎有效,但有局限性 我正在使用一个与整数值关联的字符串键的字典。我试图对每个单词应用一个权重,该权重取决于与键字符串关联的整数值。我的问题是字符串的格式不是很好,我需要在下划线(u)以及空格和其他各种分隔符上拆分它。据我所知,这需要用正则表达式来完成。我的代码如下: for key, value in sorted_articles.items(): wordList = prin

我对Python比较陌生,我正在尝试使用re拆分字符串。 我做了一些研究,遇到了一些例子,我试了一下。它们似乎有效,但有局限性

我正在使用一个与整数值关联的字符串键的字典。我试图对每个单词应用一个权重,该权重取决于与键字符串关联的整数值。我的问题是字符串的格式不是很好,我需要在下划线(u)以及空格和其他各种分隔符上拆分它。据我所知,这需要用正则表达式来完成。我的代码如下:

for key, value in sorted_articles.items():
    wordList = print(re.split(r'(_|\s|:|)',key))
当我打印出来时,它会很好地分割所有内容,但它也会打印出分隔符,而不是忽略列表中的分隔符。例如,字符串
“Hello\u你好吗”
在列表中存储为
[“你好”、“你好”、“怎么样”、“是”、“你”、“你”]

我不确定为什么会将分隔符添加到列表中,我不知道如何修复它。提前感谢您的帮助

您可以使用
\W+
字符进行拆分,该字符将拆分所有非字母字符串项,并使用
|
专门搜索下划线:

for key, value in sorted_articles.items():
    wordList = print(re.split('\W+|_',key))
例如:

s = "Hello_how are you_"

print(re.split("\W+|_", s))
输出:

['Hello', 'how', 'are', 'you', '']

您可以使用
\W+
字符进行拆分,该字符将拆分所有非字母字符串项,并使用
|
专门搜索下划线:

for key, value in sorted_articles.items():
    wordList = print(re.split('\W+|_',key))
例如:

s = "Hello_how are you_"

print(re.split("\W+|_", s))
输出:

['Hello', 'how', 'are', 'you', '']

使用
r'[\us:][/code>或
r'(?:\u124;\ s:)'
。一旦您将捕获组添加到模式中,这些值将成为结果列表的一部分。第一个非常有效,谢谢!不过,你能解释一下后一种解决方案吗?奇怪的是,两者都是等价的。它们只是在
\uu
上分开,空格和
。括号进行类匹配。它与括号内的任何字符匹配。g中没有括号不包含groupin,以?:使其成为非捕获组,而pipes |是组内的or运算符。所以[abc]匹配a或b或。(ab | c)匹配ab或c。使用
r'[\s:][/code>或
r'(?:|\s |:)
。一旦您将捕获组添加到模式中,这些值将成为结果列表的一部分。第一个非常有效,谢谢!不过,你能解释一下后一种解决方案吗?奇怪的是,两者都是等价的。它们只是在
\uu
上分开,空格和
。括号进行类匹配。它与括号内的任何字符匹配。g中没有括号不包含groupin,以?:使其成为非捕获组,而pipes |是组内的or运算符。所以[abc]匹配a或b或。(ab|c)匹配ab或c。