【发布时间】:2019-02-15 23:00:10
【问题描述】:
如果我有一个带有 X 行的 python 文件,但 Y 行仅由 cmets 占用,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)
【问题讨论】:
-
与其自己重新发明这个特殊的轮子,我可以指导你到David Wheeler's
sloccount吗? -
顺便说一句,请注意
f.readline()在空行上返回'\n',而不是''。而且我想知道您是否打算有一个循环遍历整个文件,而不仅仅是查看第一行。坦率地说,在分析之前strip()每一行可能是有意义的;除了删除尾随的\n,它还会捕获缩进的 cmets。 -
你也想处理多行 cmets 吗?
-
...您所做的编辑已经解决了您的一些问题,但您仍然没有读过第一行,即使您将变量从
firstline重命名为line. -
不,每一行 ends 以
\n(它是一个字符,而不是两个;r'\n'是两个字符,但是将其写为非原始字符串将是'\\n')。
标签: python