小编典典

在Python中获取括号内的字符串

python

我有一个样本字符串 <alpha.Customer[cus_Y4o9qMEZAugtnW] active_card=<alpha.AlphaObject[card] ...>, created=1324336085, description='Customer for My Test App', livemode=False>

我只想要该值cus_Y4o9qMEZAugtnW而不是card(在另一个内部[]

如何在Python中以最简单的方式做到这一点?也许通过使用RegEx(我不擅长)?


阅读 415

收藏
2020-12-20

共1个答案

小编典典

怎么样:

import re

s = "alpha.Customer[cus_Y4o9qMEZAugtnW] ..."
m = re.search(r"\[([A-Za-z0-9_]+)\]", s)
print m.group(1)

对我来说,这打印:

cus_Y4o9qMEZAugtnW

请注意,调用会re.search(...)找到与正则表达式的第一个匹配项,因此[card]除非您再次重复搜索,否则它将不会找到。

编辑:
这里的正则表达式是python原始字符串文字,基本上意味着反斜杠不会被视为特殊字符,而是会原样传递给re.search()方法。正则表达式的部分包括:

  1. \[匹配文字[字符
  2. ( 开始一个新的小组
  3. [A-Za-z0-9_] 是与任何字母(大写或小写),数字或下划线匹配的字符集
  4. + 与前面的元素(字符集)匹配一次或多次。
  5. ) 结束小组
  6. \]匹配文字]字符

编辑: 正如DK所指出的,正则表达式可以简化为:

m = re.search(r"\[(\w+)\]", s)

由于\w表示特殊的顺序,与[a-zA-Z0-9_]取决于re.LOCALEre.UNICODE设置的含义相同。

2020-12-20