python - 根据字符位置从字符串中提取子字符串 - Python

标签 python string substring

我正在尝试从下面的字符串中提取子字符串

   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/

相关文章:

python - 如何将ros导入PyCharm

python - Pipeline 中的项目何时调用 fit_transform(),何时调用 transform()? (scikit-learn、管道)

php - 在 PHP 中使用 substr_count() 和数组

php - substr_replace() 在 WHILE 循环中无法按预期工作

python - 有没有办法让 python 包 psutil 检测 Debian/Ubuntu 和 OSX 上未安装的设备

python - 将带有 numpy 数组的字典写入 .csv

string - 在 Bison 中使用yylval恢复字符串

python - __str__ 方法调用实例方法的返回值

python - 如何替换特定子字符串后的部分字符串

python 3 : remove a substring between two delimiting char