1

次のような行を含むテキスト ファイルがあります。

[00451] Kayle - 2/3/15 - Win - 2012-11-22

先頭の大括弧 [ ] の間の数字は ID 番号です。ファイルの最後の行 (またはその行を含む渡された文字列) からそれを取得する必要があるため、ファイルにさらに多くの行を書き込むためにそれをインクリメントできます。ゲームの記録には固有の ID 番号があります。スプリット、ストリップ、および正規表現をしばらく試してみましたが、うまくいかないようです。誰でも助けることができますか?ファイルの行を使用してこれを行うこともできますが、後で ID、名前、またはその他の基準でファイルを再ソートできるようにしたかったのです。

他のコードでファイルに書き込まれたデータは次のようになります。

data = "[%s] %s - %s/%s/%s - %s - %s\n" % (id, champname, kills, deaths, assists, winloss, timestamp)

将来の追加IDをインクリメントできるように、最後の行のIDを取得するにはどうすればよいですか?

4

2 に答える 2

2

このような行からデータを取得できます,,

In [5]: x = "[00451] Kayle - 2/3/15 - Win - 2012-11-22"

In [6]: x.split(']')[0].lstrip('[')
Out[6]: '00451'

次に、それをintに変換して数学を行います

In [7]: str(int(x.split(']')[0].lstrip('[')) + 1).zfill(5)
Out[7]: '00452'

これを行う別の方法は

In [8]: id = "%05d" %(int(x.split(']')[0].lstrip('[')) + 1)

In [9]: id
Out[9]: '00452'
于 2012-11-23T10:43:09.230 に答える
1

正規表現のソリューションは次のとおりです。

>>> s = '[00451] Kayle - 2/3/15 - Win - 2012-11-22'

>>> import re
>>> re.match(r'\[(\d+)\]', s).group(1)
00451
于 2012-11-23T10:48:35.857 に答える