如何从原始输入中的某个变量切片

时间:2017-03-26 19:18:30

标签: python-3.x

比如说,原始输入是:

... BEGIN 18.2_1894:19.8E,78.0S HBKLKL END ...

我希望切出位于BEGINEND之间的不同部分,忽略BEGIN之前和END之后的所有内容,其中...BEGINEND之前未指定或更改的字符数量。即忽略除BEGINEND之间的所有内容,并且只对其间的内容进行切片。

我怎样才能获得这些角色?

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式执行此操作:

(.*)捕获BEGINEND之间的任何字符,零次或多次。然后res.group(1)引用第一个捕获。

import re
data = "... BEGIN 18.2_1894:19.8E,78.0S HBKLKL END ..."
res  = re.search('BEGIN(.*)END', data)
print res.group(1)

print
print "Now, you can also capture specific parts with a regex..."
print

res  = re.search('BEGIN ([0-9\.]+)_([0-9]+):([0-9\.A-Z]+),([0-9\.A-Z]+) ([A-Z]+) END', data)

print res.group(1) # 18.2
print res.group(2) # 1894
print res.group(3) # 19.8E
print res.group(4) # 78.0S
print res.group(5) # HBKLKL

print
print "Or if you really want to use substrings...."
print

pos = data.index("BEGIN") + 5;
print data[(pos+3):(pos+9)]     # .2_189

答案 1 :(得分:-1)

尝试:

import re

teststr = ".... BEGIN 18.2_1894:19.8E,78.0S HBKLKL END ..."
match = re.search(r'Begin.*End',teststr, re.IGNORECASE)
print(match.group(0))

这包括"开始"和"结束"在输出中。如果你想删除"开始"请告诉我。和"结束"太