【问题标题】:Convert string to list by special symbol including this symbol, miss double symbols (as escaped character)通过包含此符号的特殊符号将字符串转换为列表,错过双符号(作为转义字符)
【发布时间】:2014-07-07 13:49:48
【问题描述】:

对不起,如果我重复问题,但仍然......

字符串包含很多符号,插入符号('^')是分隔符:

string = "^h^c^04^^^13/     \^d^b  /   \^u^u^u^u^u^u^u^l^l\^o^b^r/"`

因此我需要采用以下格式的列表:

result = ['^h', '^c', '^04', '^^', '^13/     \' ... etc..]

我尝试使用 re.split("(?!\^{2})(\^)" 但这会以格式返回数据:

['', '^', 'h', '^', 'c', '^', '04^^', '^', '13/ \\', '^', 'd', '^', 'b  /   \\', ...]

谁能建议如何以适当的格式获取数据?谢谢。

【问题讨论】:

    标签: python regex string list


    【解决方案1】:
    >>> string = "^h^c^04^^^13/     \^d^b  /   \^u^u^u^u^u^u^u^l^l\^o^b^r/"
    >>> import re
    >>> re.findall(r'\^.+?(?=\^|$)', string)
    ['^h', '^c', '^04', '^^', '^13/     \\', '^d', '^b  /   \\', '^u', '^u', '^u',
     '^u', '^u', '^u', '^u', '^l', '^l\\', '^o', '^b', '^r/']
    

    使用非贪婪匹配 (.+?) 尽可能少地匹配。

    和前瞻断言 ((?=...)) 使模式匹配到下一个 ^ 或字符串结尾 ($)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      相关资源
      最近更新 更多