【发布时间】:2018-01-31 06:46:09
【问题描述】:
我对 Python 比较陌生,我正在尝试使用 re 拆分字符串。 我进行了一些研究,并且遇到了一些示例并进行了尝试。它们似乎有效,但有局限性。
我正在使用带有与整数值关联的字符串键的字典。我正在尝试对每个单词应用一个权重,该权重取决于与键字符串关联的整数值。我的问题是该字符串的格式不完美,我需要将其拆分为下划线 ( _ ) 以及空格和其他各种分隔符。据我了解,这需要使用正则表达式来完成。我的代码如下:
for key, value in sorted_articles.items():
wordList = print(re.split(r'(_|\s|:|)',key))
当我打印出来时,它会很好地拆分所有内容,但它也会打印出分隔符,而不是在列表中忽略它们。例如,字符串"Hello_how are you_" 以['Hello', '_', 'how', ' ', 'are', ' ', 'you','_'] 的形式存储在列表中。
我不确定为什么将分隔符添加到列表中,我不知道如何修复它。提前感谢您的帮助!
【问题讨论】:
-
使用
r'[_\s:]'或r'(?:_|\s|:)'。将捕获组添加到模式中后,这些值将成为结果列表的一部分。 -
第一个效果很好,谢谢!不过,您能解释后一种解决方案吗?只是好奇
-
两者是等价的。他们只是在
_、空格和:上分开。 -
括号做类匹配。它与括号内的任何字符匹配。没有括号对 g 进行分组,以 ?: 开头使其成为非捕获组,并且管道 |是组内的 or 运算符。所以 [abc] 匹配 a 或 b 或。 (ab|c) 匹配 ab 或 c。
标签: python python-3.x