Sscanf в Python - PullRequest
       93

Sscanf в Python

56 голосов
/ 01 февраля 2010

Я ищу эквивалент sscanf() в Python. Я хочу разобрать /proc/net/* файлы, в C я мог бы сделать что-то вроде этого:

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), или функция разделения строк в стандартной библиотеке, которая разбивает любой диапазон символов, о которых я не знаю?

Ответы [ 11 ]

0 голосов
/ 01 февраля 2010

Если разделителями являются ':', вы можете разделить на ':', а затем использовать x.strip () для строк, чтобы избавиться от любого начального или конечного пробела.int () будет игнорировать пробелы.

...