我有一个输出,其长度和值会有所不同,我希望从中提取一个值。我想从一个字符串中提取一个字符串,其值将会改变
这是我的输出:
'+CPBR: 1,"111",129,"0|2|XX"^M'
在这种情况下,我想提取的“XX”,
不过,我想提取“9X”如果值是:
'+CPBR: 1,"111",129,"01|2|9X"^M'
有没有人知道这样做的好方法?
我有一个输出,其长度和值会有所不同,我希望从中提取一个值。我想从一个字符串中提取一个字符串,其值将会改变
这是我的输出:
'+CPBR: 1,"111",129,"0|2|XX"^M'
在这种情况下,我想提取的“XX”,
不过,我想提取“9X”如果值是:
'+CPBR: 1,"111",129,"01|2|9X"^M'
有没有人知道这样做的好方法?
可以使用regular expression这样的:
>>> string = '+CPBR: 1,"111",129,"0|2|XX"^M'
>>> import re
>>> re.search('\|([^|"]+)"',string).group(1)
'XX'
>>> string = '+CPBR: 1,"111",129,"0|2|9X"^M'
'9X'
>>> string = '+CPBR: 1,"111",129,"0|2|ABC"^M'
'ABC'
这将匹配之间的一切|和“不包含任何字符(|”)。
这是我以为我想要的确切代码!你知道我如何从“X | Y | Z”得到| Y | Z或Y | Z。第一个分隔符是|最后是“感谢 – user1281032 2013-02-19 15:26:18
鉴于格局! ”X | Y | Z“,正则表达式“ ”([^ |“] +)\ |([^ | ”] +)\ |([^ |“] +)“”将给出你三组:组(1)将X,(2)将Y和组(3)将是Z.然后可以重组的X,Y和Z的字符串作为你需要基。如果这是有帮助的,不要忘了接受的答案,P – isedev 2013-02-19 15:52:53
完美的作品!谢谢 :) – user1281032 2013-02-19 16:21:54
In [2]: a=r'+CPBR: 1,"111",129,"0|2|XX"^M'
In [3]: b=r'+CPBR: 1,"111",129,"01|2|9X"^M'
In [4]: a.split('|')[-1][0:2]
Out[4]: 'XX'
In [5]: b.split('|')[-1][0:2]
Out[5]: '9X'
你的字符串在格式上真的是一致的吗?如果是这样的话:'[-5:-3]'就能做到。如果不是,请详细解释输出的格式。 – mgilson 2013-02-19 13:48:18
他们并不总是那么一致,因为你可以看到,这将为第一个输出,但不是第二个。它可以在XXXXX中读取,而不是XX。唯一的一致就是它在第二个|之后而在“ – user1281032 2013-02-19 14:13:51
这就是是解决这一问题的:)重要信息的确切片结束。否则,我们只是在应该用来解析字符串哪种算法猜测。 – mgilson 2013-02-19 14:15:43