我需要解析包含特定关键字的行的文本,并以这种格式打印出来(空格也很重要):
第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()))
答案 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
个关键字的文件测试了您的脚本。脚本的输出如下: