Python 从文件中删除注释行

Python 从文件中删除注释行,python,list,comments,file-type,Python,List,Comments,File Type,我正在创建一个文件类型来存储程序中的信息。文件类型可以包括以#开头的行,如: 如图所示,行前面的#表示注释。 我用Python编写了一个程序,可以读取以下文件: fileData = [] file = open("Tutorial.rdsf", "r") line = file.readline() while line != "": fileData.append(line) line = file.readline() for item in list(fileDa

我正在创建一个文件类型来存储程序中的信息。文件类型可以包括以#开头的行,如:

如图所示,行前面的#表示注释。 我用Python编写了一个程序,可以读取以下文件:

fileData = []

file = open("Tutorial.rdsf", "r")

line = file.readline()

while line != "":
    fileData.append(line)
    line = file.readline()

for item in list(fileData):
   item.strip()

fileData = list(map(lambda s: s.strip(), fileData))

print(fileData)
如您所见,它接受该文件,将每一行作为一个项目添加到列表中,并将项目\n剥离。到目前为止,一切顺利

但这些文件通常包含我的评论,程序会将它们添加到列表中

是否有办法删除列表中以#开头的所有项目?

编辑:让事情更清楚一点:评论不会是这样的:

Some code:
{Some Code}    #Foo
#Foo
Some code:
{Some Code}
他们会是这样的:

Some code:
{Some Code}    #Foo
#Foo
Some code:
{Some Code}

您可以直接在
for
循环中处理行:

with open("Tutorial.rdsf", "r") as file:
    for line in file:
        if line.startswith('#'):
            continue  # skip comments
        line = line.strip()

        # do more things with this line
仅当您需要随机访问(例如,您需要访问特定索引的行)时,才将它们放入列表中


我使用
with
语句来管理打开的文件,当Python到达
with
块的末尾时,文件将自动为您关闭。

您可以直接在
for
循环中处理行:

with open("Tutorial.rdsf", "r") as file:
    for line in file:
        if line.startswith('#'):
            continue  # skip comments
        line = line.strip()

        # do more things with this line
仅当您需要随机访问(例如,您需要访问特定索引的行)时,才将它们放入列表中


我使用
with
语句来管理打开的文件,当Python到达
with
块的末尾时,文件会自动关闭。

很容易检查前导的
#
符号

更改此项:

while line != "":
    fileData.append(line)
    line = file.readline()
为此:

while line != "":
    if not line.startswith("#"):
        fileData.append(line)
    line = file.readline()

但是你的程序有点复杂。查看文档,其中解释了文件中的行:

很容易检查前导的
#
符号

更改此项:

while line != "":
    fileData.append(line)
    line = file.readline()
为此:

while line != "":
    if not line.startswith("#"):
        fileData.append(line)
    line = file.readline()

但是你的程序有点复杂。查看文档,其中解释了文件中的行:

不要使用while循环,直接迭代文件。您的
readline
while循环可以替换为
fileData=file.readlines()
(复数)或
fileData=list(file)
。您的
for
循环剥离行根本不起作用,因为您从未分配回剥离的行。您不需要调用
list()
no对象已经是列表。请参阅不要使用while循环,直接迭代文件。您的
readline
while循环可以替换为
fileData=file.readlines()
(复数)或
fileData=list(file)
。您的
for
循环剥离行根本不起作用,因为您从未分配回剥离的行。你不需要调用
list()
没有对象已经是列表了。看,他们根本不应该使用
while
循环。@MartijnPieters:我说过了。他们根本不应该使用
while
循环。@MartijnPieters:我说过了。如果这些是代码文件,那么strip()会删除缩进(改用rstrip)。@cᴏʟᴅsᴘᴇᴇᴅ: 我认为我们不需要在这个小上下文中做出这样的飞跃,并且不是所有的代码都依赖于缩进。@cᴏʟᴅsᴘᴇᴇᴅ: 我们甚至不知道在
前面加空格是否重要。在我的答案中,在
前面加空格的行不会被忽略,而在你的答案中则会被忽略。这两种方法都是有效的。如果这些是代码文件,则strip()会删除缩进(改用rstrip)。@cᴏʟᴅsᴘᴇᴇᴅ: 我认为我们不需要在这个小上下文中做出这样的飞跃,并且不是所有的代码都依赖于缩进。@cᴏʟᴅsᴘᴇᴇᴅ: 我们甚至不知道在
前面加空格是否重要。在我的回答中,在
前面加空格的行不会被忽略,而在你的回答中则会被忽略。这两种方法都是有效的。