我需要解析包含特定关键字的行的文本,并以这种格式打印出来(空格也很重要):
第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()))
我试着用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
关键字的文件进行修改后测试了您的脚本。脚本的输出如下:
在Print Statement中使用如下所示
print ('{} {}, {} #{}, {}'.format('line', line_count, 'hit',
keyword_count, l.rstrip()))
它将打印如下
第0行,点击#0,
l
我在这里的字符串中