我正在尝试从下面的字符串中提取子字符串
package: name='com.example.tracker' versionCode='1' versionName='1.0'
作为字符串 1 : versionCode='1' 并作为字符串 2:versionName='1.0'
我使用了 str.find('versionCode),它返回版本代码中“v”的索引,并使用字符串长度来访问“1”。然而,有时版本代码可能是两位数,所以我无法修复该数字的位置。有办法实现这一点吗?
如果字符串是
package: name='com.example.tracker' versionCode='12' versionName='12.0'
我需要提取 12 和 12.0。 我的实现可以支持个位数,但数字会有所不同。
if line.find('versionCode') != -1:
x = line.find('versionCode')
versionCode = line[x+13:x+15]
最佳答案
您需要使用regular expressions来做到这一点。
在下面的每一行中,我们使用模式 (.*?)
在引号内执行非贪婪搜索以提取字符串,然后拉取 group(1)
而不是返回对象上的 group(0)
,因为 0
返回整个输入字符串的完全匹配,而 1
给出第一个正则表达式捕获组。
import re
packageDetails = "package: name='com.example.tracker' versionCode='1' versionName='1.0'"
name = re.search("name='(.*?)'", packageDetails).group(1)
versionCode = re.search("versionCode='(.*?)'", packageDetails).group(1)
versionName = re.search("versionName='(.*?)'", packageDetails).group(1)
print "package name is :", name
print "version code is :", versionCode
print "version name is :", versionName
输出:
package name is : com.example.tracker
version code is : 1
version name is : 1.0
关于python - 根据字符位置从字符串中提取子字符串 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18861715/