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 次 |
| 最近记录: |