Pythonのsscanf 質問する

Pythonのsscanf 質問する

Python で同等のものを探していますsscanf()。ファイルを解析したいのです/proc/net/*が、CI では次のようなことができます。

int matches = sscanf(
        buffer,
        "%*d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %*X %*X:%*X %*X:%*X %*X %*d %*d %ld %*512s\n",
        local_addr, &local_port, rem_addr, &rem_port, &inode);

最初は を使用しようと考えましたstr.splitが、指定された文字ではなくsep文字列全体が分割されます。

>>> lines = open("/proc/net/dev").readlines()
>>> for l in lines[2:]:
>>>     cols = l.split(string.whitespace + ":")
>>>     print len(cols)
1

上で説明したように、17 が返されるはずです。

Python にsscanf(RE ではない) 同等のもの、または私が知らない範囲の文字のいずれかで分割する標準ライブラリの文字列分割関数はありますか?

ベストアンサー1

また、parseモジュール。

parse()format()(Python 2.6 以降の新しい文字列フォーマット関数)の逆になるように設計されています。

>>> from parse import parse
>>> parse('{} fish', '1')
>>> parse('{} fish', '1 fish')
<Result ('1',) {}>
>>> parse('{} fish', '2 fish')
<Result ('2',) {}>
>>> parse('{} fish', 'red fish')
<Result ('red',) {}>
>>> parse('{} fish', 'blue fish')
<Result ('blue',) {}>

おすすめ記事