1

以下の文字列から部分文字列を抽出しようとしています

   package: name='com.example.tracker' versionCode='1' versionName='1.0'

文字列 1 として: versionCode='1' および文字列 2 として: versionName='1.0'

バージョンコードで「v」のインデックスを返す str.find('versionCode) を使用し、文字列の長さを使用して「1」にアクセスしました。ただし、バージョンコードが2桁の数字になる場合があるため、数字の位置を修正できません。これを達成する方法はありますか?

文字列が

    package: name='com.example.tracker' versionCode='12' versionName='12.0'

12 と 12.0 を抽出する必要があります。私の実装では 1 桁をサポートできますが、桁は異なります。

 if line.find('versionCode') != -1:
            x = line.find('versionCode') 
            versionCode = line[x+13:x+15] 
4

3 に答える 3

1

これを行うには、正規表現を使用する必要があります。

以下の各行では、パターンを使用して引用符内で貪欲でない検索を実行して文字列を抽出し、返されたオブジェクトではなく(.*?)プルします。入力文字列全体で完全一致を返し、最初の正規表現キャプチャ グループ。group(1)group(0)01

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
于 2013-09-17T23:58:42.377 に答える
1

組み込みメソッドで文字列を操作して、必要な値を取得できます。

packageDetails = "package: name='com.example.tracker' versionCode='1' versionName='1.0'"
details = packageDetails
params = ['name=', 'versionCode=', 'versionName=']
params.reverse()
values = []
for p in params:
    details, v = details.split(p)
    values.append(v.strip().strip("'"))
values.reverse()
于 2013-09-18T01:11:47.483 に答える