Точный номер строки токена в модуле python shlex - PullRequest
0 голосов
/ 10 февраля 2020

TL; DR: Как получить точный номер строки токена в модуле python shlex.

Рассмотрим простой текстовый файл:

line2


line5

т.е. первая строка пуста, вторая строка содержит токен line2, третья строка пуста, четвертая строка пуста, пятая строка содержит токен line5. Вы можете создать этот файл в bash используя:

$ echo -e '\nline2\n\n\nline5\n' > data.txt

Теперь рассмотрим простой скрипт

#! /usr/bin/env python3
import shlex
s = shlex.shlex(open("data.txt"))
for _ in range(3):
    print("lineno: {}".format(s.lineno))
    print("Token:  {}".format(s.get_token()))

Вывод:

lineno: 1
Token:  line2
lineno: 3
Token:  line5
lineno: 6
Token:

Как вы можете увидеть, что ни одна строка токена не может быть идентифицирована, независимо от того, получите ли вы shlex.lineno до или после get_token(). Как получить токен и номер его строки в модуле shlex? (Даже не смей просить номер столбца)

...