我有一个字符串存储在变量mystring
中。我想用character 4-digit-integer character
模式(即(4位整数))分割字符串。我想这可以使用Python正则表达式来完成。
mystring = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
所需的输出:
splitstring = ['Lorem Ipsum (2018)', 'Amet (Lorem Dolor Amet Elit)']
答案 0 :(得分:2)
如果您不介意进行一些过滤,则可以:
import re
string = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
result = [m for m in re.split('([^\d(]+\(\d{4}\))\s+', string) if m]
print(result)
输出
['Lorem Ipsum (2018)', 'Amet (Lorem Dolor Amet Elit)']
在将split与捕获组一起使用时,在这种情况下,结果将包括该组([^\d(]+\(\d{4}\))
,即不是数字也不是开放括号的任何内容,紧随其后的是四个用括号括起来的数字。
不排除以下空格\s+
。
答案 1 :(得分:0)
这是一种简单的方法。
由于括号在RE中有另一种含义(它们称为捕获组),因此您需要像\(
那样将其转义以打开括号。
然后,您可以搜索(2018)
,然后根据需要拆分文本:
import re
s = 'Lorem Ipsum (2018) Amet (Lorem Dolor Amet Elit)'
match = re.search(r'\(\d{4}\)', s)
split_string = [ s[:match.end()], s[match.end():] ]
print(split_string)
# ['Lorem Ipsum (2018)', ' Amet (Lorem Dolor Amet Elit)']