gpt4 book ai didi

python - 我有多少行无注释代码?

转载 作者:行者123 更新时间:2023-11-30 21:59:00 26 4
gpt4 key购买 nike

如果我有一个包含 X 行的 python 文件,但 Y 行仅被注释占用,而 Z 行只是空白,我如何找到 N,N=X-Y-Z?

这是我尝试过的。这是我的示例代码;

#This is a function to find prime numbers...
#..., it's taken from https://stackoverflow.com/questions/14656473/python-beginners-loop-finding-primes

primes_in_a_list = []
for p in range(2, 100):
for i in range(2, p):
if p % i == 0:
break
else:
primes_in_a_list.append(p)

print (primes_in_a_list)

在上面的示例中有 12 行,我想运行另一个打印出 8 的 .py 文件/脚本。使用下面的代码,我得到 10 作为答案。

x, y, z = 0, 0, 0

with open('test.py') as f:
content = f.readlines()

content = [x.strip() for x in content]
for line in content:
theline = line[2:]
x += 1
if theline.startswith('#'):
y += 1
if not theline:
z += 1
n = x-y-z

print (n)

最佳答案

在 shell 中使用 grepwc:

grep -vE '^[[:space:]]*#|^$' test.py | wc -l

这将给出8

  • ^[[:space:]]*# 将匹配零个或多个空格 ([[:space:]]) 后跟 # 在行开头 ^ 之后。
  • ^$ 匹配行的开头 ^ 后跟行的结尾 $
  • | 是一个或运算符,如果满足任一表达式则匹配
  • grep-E 选项启用扩展正则表达式
  • grep-v 选项会反转匹配,即它返回与模式匹配的行
  • wc 计算文件或流中的换行符、单词或字节数,-l 选项仅返回(新)行数
  • shell 中的 | 将左侧命令的(标准)输出传送到右侧命令(的标准输入)。

匹配多行注释更加困难,因为您需要找到两个标记之间的行。使用sed也许是可能的,但我现在不太确定如何做到这一点。

关于python - 我有多少行无注释代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54718130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com