Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text parsing 在python中删除以octothorpe开头的列表元素会忽略一些元素_Text Parsing_Python 3.7 - Fatal编程技术网

Text parsing 在python中删除以octothorpe开头的列表元素会忽略一些元素

Text parsing 在python中删除以octothorpe开头的列表元素会忽略一些元素,text-parsing,python-3.7,Text Parsing,Python 3.7,这是文本文件(pathProtocol.txt): 我正在解析并试图从中删除空格和以#开头的行。 使用我的代码从以下内容开始: # PROTOCOL PARSING # READ FILE & EXCLUDE BLANKS with open(os.path.join(*pathProtocol)) as f: content = (line.rstrip() for line in f) # Non-blank lines in a list content =

这是文本文件(pathProtocol.txt):

我正在解析并试图从中删除空格和以#开头的行。 使用我的代码从以下内容开始:

# PROTOCOL PARSING
# READ FILE & EXCLUDE BLANKS
with open(os.path.join(*pathProtocol)) as f:
    content = (line.rstrip() for line in f)
    # Non-blank lines in a list
    content = list(line for line in content if line)
#
print(content)
print(type(content))
print(len(content))
print('')
产生所需的输出:

['# 2018-09-30', '# incubator at 33C', '# sample compartment at 32C', '# hold sample in for 30sec before', '# measurement', 'samp-2', 'reps-3', '#Temp   Humid\tPress', '# 24\t42\t980', '# background', 'MilliQ_MilliQ_0\t000-005', 'Q_Prp_62mM\t006-011', 'Q_Ah6_62mM\t012-017', 'Q_Eth_62mM\t018-023', 'Q_AcA_62mM\t024-029', 'Q_Imd_62mM\t030-035', '# background', 'MilliQ_MilliQ_0\t036-041', '# 24\t43\t977']
<class 'list'>
19
我得到以下输出:

0 # 2018-09-30  first char: #
1 # sample compartment at 32C   first char: #
2 # measurement     first char: #
3 reps-3    first char: r
4 #Temp   Humid Press   first char: #
5 # background  first char: #
6 Q_Prp_62mM    006-011     first char: Q
7 Q_Ah6_62mM    012-017     first char: Q
8 Q_Eth_62mM    018-023     first char: Q
9 Q_AcA_62mM    024-029     first char: Q
10 Q_Imd_62mM   030-035     first char: Q
11 # background     first char: #
12 # 24 43  977     first char: #
['# incubator at 33C', '# hold sample in for 30sec before', 'samp-2', 'reps-3', '# 24\t42\t980', 'MilliQ_MilliQ_0\t000-005', 'Q_Prp_62mM\t006-011', 'Q_Ah6_62mM\t012-017', 'Q_Eth_62mM\t018-023', 'Q_AcA_62mM\t024-029', 'Q_Imd_62mM\t030-035', 'MilliQ_MilliQ_0\t036-041']

这会从初始列表中省略某些项,但会在随后的列表输出中显示它们。作为一名python初学者,我无法理解逐行输出中发生的事情。我犯了什么错误?如何正确删除以#?

开头的行?当您在内容上进行迭代时,您正在更改内容,这通常不起作用。 相反,在
内容的副本上迭代。也就是说,将
enumerate(content)
更改为
enumerate(content[:])

# DELETE COMMENTS
for i, line in enumerate(content):
    print(str(i), line, '\tfirst char:', line[0])
    if line.startswith('#'):
        content.remove(line)
    #
#
print(content)
0 # 2018-09-30  first char: #
1 # sample compartment at 32C   first char: #
2 # measurement     first char: #
3 reps-3    first char: r
4 #Temp   Humid Press   first char: #
5 # background  first char: #
6 Q_Prp_62mM    006-011     first char: Q
7 Q_Ah6_62mM    012-017     first char: Q
8 Q_Eth_62mM    018-023     first char: Q
9 Q_AcA_62mM    024-029     first char: Q
10 Q_Imd_62mM   030-035     first char: Q
11 # background     first char: #
12 # 24 43  977     first char: #
['# incubator at 33C', '# hold sample in for 30sec before', 'samp-2', 'reps-3', '# 24\t42\t980', 'MilliQ_MilliQ_0\t000-005', 'Q_Prp_62mM\t006-011', 'Q_Ah6_62mM\t012-017', 'Q_Eth_62mM\t018-023', 'Q_AcA_62mM\t024-029', 'Q_Imd_62mM\t030-035', 'MilliQ_MilliQ_0\t036-041']