如何使用格式在输出字符串中插入标点符号?

时间:2019-04-24 10:53:03

标签: python string format

我需要解析包含特定关键字的行的文本,并以这种格式打印出来(空格也很重要):

第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 :(得分:0)

在“打印对帐单”中的使用方式如下

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

它将打印如下

  

第0行,点击#0,l

l如此处的字符串

答案 1 :(得分:0)

我尝试使用script在Ubuntu计算机上运行您的Python 3.6.7

  

当我尝试使用{:: =}和格式插入','和'#'时,会打印出错误。

我修复了缩进和您的format字符串。我已从您的format字符串中删除了第一个和第三个参数。我认为您想始终以相同的方式打印line字符串和hit字符串,因此它们不应包含在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