58

私は次のPythonコードを使用して、整数のパーツIDをフォーマットされたパーツ番号文字列としてフォーマットしています。

pn = 'PN-{:0>9}'.format(id)

'PN-{:0>9}'同じフォーマット文字列( )を逆に使用して、フォーマットされた部品番号から整数IDを抽出する方法があるかどうかを知りたいです。それができない場合は、単一のフォーマット文字列(または正規表現?)を使用して作成および解析する方法はありますか?

4

4 に答える 4

81

parseモジュールは「format() の反対です」。

使用例:

>>> import parse
>>> format_string = 'PN-{:0>9}'
>>> id = 123
>>> pn = format_string.format(id)
>>> pn
'PN-000000123'
>>> parsed = parse.parse(format_string, pn)
>>> parsed
<Result ('123',) {}>
>>> parsed[0]
'123'
于 2013-09-04T18:12:36.240 に答える
17

scanf のシミュレーションが面白いと思うかもしれません。

于 2012-05-19T12:22:44.430 に答える
0

どうですか:

id = int(pn.split('-')[1])

これは部品番号をダッシュ​​で分割し、2 番目のコンポーネントを取得して整数に変換します。

PS私はidあなたの質問への接続が明確になるように変数名として残しました。組み込み関数の影にならないように変数の名前を変更することをお勧めします。

于 2012-05-19T07:04:58.280 に答える