-1

我有这样的模式:

" 1+2;\r\n\r(%o2) 3\r\n(%i3) "

我想把它们分成:

[" 1+2;","(%o2) 3","(%i3)"]

第一个模式的正则表达式很难构建,因为它可能是用户对代数系统的任何要求,第二个可能是:

'\(%o\d+\).'

最后是这样的:

'\(%i\d+\)

我并没有严格地被正则表达式部分难倒,但是一旦我知道正确的模式,如何实际拆分。我将如何拆分这个?

4

2 回答 2

1

分手了(\r|\n)+怎么办?

于 2013-03-21T15:50:47.793 回答
1

这段代码对你有用吗?

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 和所有不同组合的问题。

于 2013-03-21T16:01:55.267 回答