我的计划需要帮助。 我想阅读我的标签文件,然后添加一个新的列(ab)到该文件,我想从字典(hi)获得。你知道吗
我的字典名为hi
,对于列,我需要来自ab
的数据。
数据应该与字典中正确的特殊名称相邻。请看一下我的例子。你知道吗
我的选项卡文件如下所示:
Names names_id first second special_name
lili 1 a b Tm
Katrin 2 c d Tm
Paul 3 e f ui
bob 4 g h zb
tina 5 i j ac
它应该看起来像:
Names names_id first second special_name ab
lili 1 a b Tm a
Katrin 2 c d Tm a
Paul 3 e f ui f
bob 4 g h zb b
tina 5 i j ac a
我的剧本如下:
with open("myData.tab","r") as file:
hi = {'ac':{'ab': 'a', 'po':'pb'},
'Tm':{'ab': 'a', 'po':'h'},
'ui':{'ab': 'b', 'po':'h'},
'zb':{'ab': 'f', 'po':'j'}}
for line in file:
line = line.strip()
columns = line.split("\t")
print(line)
for row in columns:
file.append('ab')
当我打印的时候,我得到了所有的数据,但是没有标题和字典。如果有任何帮助,我将不胜感激。你知道吗
我建议您使用Python的
csv
库来实现这一点,因为它将使事情变得更简单:提供一个以制表符分隔的输出文件,并从输入csv文件中正确复制标题:
csv
库能够自动读取文件的每一行,并将其正确地转换为列表。当写回一个文件时,你所需要做的就是给它一个列表,它会在每个值之间自动添加必要的分隔符。当您需要处理可能包含分隔符本身的字符串时,这一点变得更加重要。你知道吗下面的代码提供了问题中所需的输出。 不过,与你原来的帖子相比,有一些事情需要考虑。你知道吗
当与你原来的文章比较时,文件还是一样打开的。字典仍然是创建的,我只是将文件对象名从
file
更改为input_file
。你知道吗在这段代码中,创建了一个名为
columns
的空列表。之后,我们循环文件中的每一行,非常类似于您在代码中所做的。唯一的区别是我们将每一行附加到columns
列表中。你知道吗循环遍历文件中的每一行之后,我们创建一个
output_list
,在其中添加第一行(带有标题的那一行),并将'ab'字符串添加到headerrow。你知道吗然后我们循环遍历每一个非标题行和
hi
字典中对应于每一行的特殊名称的值。然后我们将行添加到output_list
。 然后我们打开一个不同的文件,并将输出列表中的每一行写入其中。结果是这个输出(结果是制表符分隔的,所以这里的间隔很小)。你知道吗注意:如果特殊名称列下的任何值不在
hi
字典中,那么这段代码将为您提供一个KeyError
。为了简单起见,我选择了最容易理解的实现。但它是脆弱的KeyError
您不必将输出列表写入一个单独的文件,您可以将
myData2.tab
更改为myData.tab
,但是这将从零开始完全重写文件。如果出现任何问题,您可能会丢失原始文件。所以我个人的偏好是(如果可能的话)写一个新文件。这样就不会丢失原始输入。你知道吗相关问题 更多 >
编程相关推荐