我有这样的模式:
" 1+2;\r\n\r(%o2) 3\r\n(%i3) "
我想把它们分成:
[" 1+2;","(%o2) 3","(%i3)"]
第一个模式的正则表达式很难构建,因为它可能是用户对代数系统的任何要求,第二个可能是:
'\(%o\d+\).'
最后是这样的:
'\(%i\d+\)
我并没有严格地被正则表达式部分难倒,但是一旦我知道正确的模式,如何实际拆分。我将如何拆分这个?
分手了(\r|\n)+
怎么办?
这段代码对你有用吗?
patterns = [p.strip() for x in " 1+2;\r\n\r(%o2) 3\r\n(%i3) ".split("\r\n")]
澄清:
>>> patterns = " 1+2;\r\n\r(%o2) 3\r\n(%i3) ".split("\r\n")
>>> patterns
[' 1+2;', '\r(%o2) 3', '(%i3) ']
>>> patterns = [p.strip() for p in patterns]
['1+2;', '(%o2) 3', '(%i3)']
通过这种方式,您可以拆分线条并摆脱不必要的白色字符。
编辑:还有:Python String 也有 splitlines() 方法:
splitlines(...)
S.splitlines([keepends]) -> list of strings
Return a list of the lines in S, breaking at line boundaries.
Line breaks are not included in the resulting list unless keepends
is given and true.
所以这段代码可以改成:
patterns = [p.strip() for x in " 1+2;\r\n\r(%o2) 3\r\n(%i3) ".splitlines()]
这可能会解决没有 CR 的 NL 和所有不同组合的问题。