我正在努力使用 python 正则表达式来获得正确的输出。
我有这样的字符串文件:
80H236M7I106M2885H
除了整数字符串可以包含:IDMSH
我正在尝试锻炼字符串中某些部分的起始端(S 和 H 的部分。这些部分始终位于字符串的开头、结尾或两端),我的示例字符串的正确输出为:
0 80 80H236M7I106M2885H
429 3314 80H236M7I106M2885H
(基本上我们将所有数字相加,直到遇到另一个块,我们正在搜索,结束,然后我们设置新的开始,结束)(顺便说一句,知道该部分是在字符串的开头还是结尾也很高兴) 例如:
0 80 80H236M7I106M2885H start
429 3314 80H236M7I106M2885H end
我使用了这样的代码:
insstart = 0
insend = 0
for num1, i_or_d in re.findall('(\d+)([HISDM])', pcigar):
if i_or_d in 'S':
insstart == insstart
insend += int(num1)
elif i_or_d in 'H':
insstart == insstart
insend += int(num1)
elif i_or_d in 'M':
insstart += int(num1)
insend += int(num1)
elif i_or_d in 'I':
insstart += int(num1)
insend += int(num1)
if i_or_d in 'H' or i_or_d in 'S':
print insstart,insend,pcigar
我不在乎 D,因为在我的文件中它不存在。但是,如果以某种方式存在,则不应更改 insstart、insend (==)
但是它输出:
0 80 80H236M7I106M2885H
349 3314 80H236M7I106M2885H
谁能帮我得到正确的输出?干杯,艾瑞克