Как вставить знаки препинания в выходную строку, используя формат? - PullRequest
1 голос
/ 24 апреля 2019

Мне нужно проанализировать текст для строк, содержащих определенные ключевые слова, и распечатать их в этом формате (пробелы также важны):

строка 7, попадание № 1: строка 8, попадание № 2: ....

Когда я пытаюсь вставить ',' и '#', используя {:: =} и форматировать, он выводит ошибку.

Вот мой код:

    #!/usr/bin/env python
    import sys

    if len(sys.argv) <= 2:
        print("Error", file=sys.stderr)

    filename = sys.argv[1]
    keyword = sys.argv[2]

    line_count = 0
    keyword_count = 0
    with open(filename, "r") as f:
         for l in f.readlines():
         line_count += 1
         if keyword in l:
            keyword_count += 1
            print ('{} {} {} {} {}'.format('line', line_count, 'hit', 
         keyword_count, l.rstrip()))

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Я попытался запустить ваш script на моей машине с Ubuntu с помощью Python 3.6.7.

Когда я пытаюсь вставить ',' и '#', используя {:: =} и отформатировать, он выводит ошибку.

Я исправил отступ и вашу format строку.Я удалил первый и третий аргументы из вашей строки format.Я думаю, что вы хотите печатать line String и hit String всегда одинаково, и тогда они не должны быть в format аргументах.Я также добавил символы , и # для печати совпадений в желаемом формате.

#!/usr/bin/env python
import sys

if len(sys.argv) <= 2:
    print("Error", file=sys.stderr)

filename = sys.argv[1]
keyword = sys.argv[2]

line_count = 0
keyword_count = 0
with open(filename, "r") as f:
     for l in f.readlines():
        line_count += 1
        if keyword in l:
            keyword_count += 1
            print ('line {0}, hit #{1}: {2}'.format(line_count, keyword_count, l.rstrip()))

Я протестировал ваш сценарий после изменений в файле с ключевыми словами print.Вывод скрипта ниже:

enter image description here

0 голосов
/ 24 апреля 2019

В заявлении на печать используйте, как показано ниже

print ('{} {}, {} #{}, {}'.format('line', line_count, 'hit', 
         keyword_count, l.rstrip()))

Будет напечатано, как показано ниже

строка 0, нажатие # 0, l

l как в строке здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...