Line = "A[0x04] Va [0xf]
如何将这些行拆分为包含0x04
和0xf
的两个变量?
尝试解决方案:
for line in sys.stdin:
line.strip("[]").split
答案 0 :(得分:3)
我会使用re.findall
:
>>> from re import findall
>>> Line = "A[0x04] Va [0xf] "
>>> findall("\[([^\]]*)\]", Line)
['0x04', '0xf']
>>> x,y = findall("\[([^\]]*)\]", Line)
>>> x
'0x04'
>>> y
'0xf'
>>>
以下是正则表达式模式的细分:
\[ # [
([^\]]*) # Capture group to get zero or more characters that are not ]
\] # ]
答案 1 :(得分:2)
import re
re.findall("\[[^\]]*\]", Line)
答案 2 :(得分:2)
使用列表理解:
>>> Line = "A[0x04] Va [0xf]"
>>> [x.partition(']')[0] for x in Line.split('[') if ']' in x]
['0x04', '0xf']
答案 3 :(得分:1)
In [36]: %paste
answer = []
take = False
line = "A[0x04] Va [0xf] "
start = 0
for i,char in enumerate(line):
if not take:
if char == '[' :
take = True
start = i+1
else:
if char == ']':
take = False
answer.append(line[start:i])
## -- End pasted text --
In [37]: answer
Out[37]: ['0x04', '0xf']