如何从某些条件下打印的文件中删除行?

时间:2015-11-04 16:14:44

标签: python python-3.x

"test.cpp", line 17: Error: The function "sigset" must have a prototype.

我想打开这个文件并打印它的内容但是我不想打印任何带有哈希的行。是否有防止打印这些线的功能?

2 个答案:

答案 0 :(得分:1)

以下脚本打印所有不包含#的行:

def codeOnly(file):
    '''Opens a file and prints the content excluding anything with a hash in it'''
    with open(file, 'r') as f_input:
        for line in f_input:
            if '#' not in line:
                print(line, end='')

codeOnly('boring.txt')

使用with将确保文件随后自动关闭。

答案 1 :(得分:0)

您可以检查该行是否包含not '#' in codecontent的哈希值(使用in):

def codeOnly (file):
    '''Opens a file and prints the content excluding anything with a hash in it'''
    f = open('boring.txt','r')
    for line in f:    
       if not '#' in line:
          print(line)
codeOnly('boring.txt')

如果你真的只想保留代码行,你可能希望保留行的部分直到哈希,因为在python之类的语言中你可以在哈希之前有代码,例如:

print("test")  # comments

您可以找到index

for line in f:
   try:
      i = line.index('#')
      line = line[:i]
   except ValueError:
      pass # don't change line

现在,每行都不包含任何文本,包括哈希标记,直到行尾。行的第一个位置的哈希标记将导致空字符串,您可能想要处理它。