Nam*_*nge 3 python string list
假设你有一个这样的字符串:"(hello) (yes) (yo diddly)"
.
你想要一个这样的列表: ["hello", "yes", "yo diddly"]
你会如何用Python做到这一点?
import re
pattern = re.compile(r'\(([^)]*)\)')
Run Code Online (Sandbox Code Playgroud)
该模式匹配string(\(...\)
)中的括号,并且需要对这些括号进行转义.
然后它定义了一个子组((...)
) - 这些括号是正则表达式语法的一部分.
子组匹配除右括号外的所有字符([^)]*
)
s = "(hello) (yes) (yo diddly)"
pattern.findall(s)
Run Code Online (Sandbox Code Playgroud)
给
['hello', 'yes', 'yo diddly']
Run Code Online (Sandbox Code Playgroud)
更新:
最好用[^)]+
而不是[^)]*
.后者也会匹配一个空字符串.
正如DSM建议的那样,使用非贪婪修饰符可以使模式更好地阅读: pattern = re.compile(r'\((.+?)\)')
我会这样做:
"(hello) (yes) (yo diddly)"[1:-1].split(") (")
Run Code Online (Sandbox Code Playgroud)
首先,我们切断了第一个和最后一个字符(因为它们应该被移除).接下来,我们使用")("作为分隔符,分割结果字符串,给出所需的列表.
归档时间: |
|
查看次数: |
6215 次 |
最近记录: |