在.split()之后保持标签

时间:2012-08-09 09:34:05

标签: python

我正在开展一个小项目,但我遇到了一个问题。

我正在读取类似的文件(请注意,原始文件大约有40k行):

35   IMAGE:1679942   SAMD4   Sterile alpha motif domain   Hs.98259   ATI146610
36   IMAGE:1700154            AI049531
37   IMAGE:1865232            AI269361

如您所见,有些单元格包含信息,有些则不包含。 所以我希望在没有信息存储的每个单元格中都有 N / A 。我怎样才能做到这一点? .split()会创建一个没有这些单元格的列表。有没有解决方案,如何将所有这些点击保留在列表中,即line = ["36", "IMAGE:1700154", "", "", "", "AI049531", ...]

2 个答案:

答案 0 :(得分:2)

您可以在标签页上split修改使用评论中的数据):

data = """35\tIMAGE:1679942\tSAMD4\tSterile alpha motif domain\tHs.98259\tATI146610
36\tIMAGE:1700154\t\t\tAI049531"""

for line in data.split("\n"):
    print line.split("\t")

结果:

['35', 'IMAGE:1679942', 'SAMD4', 'Sterile alpha motif domain', 'Hs.98259', 'ATI146610']
['36', 'IMAGE:1700154', '', '', 'AI049531']

答案 1 :(得分:0)

在将数据导入CSV并随后导入所需的列表格式之前,您必须先准备好数据。

1)首先找到你想拥有的最大列数

2)找到每个行项目的模式。例如。 A *,Sterite *等。希望这种模式可以区分不同的行项目。

3)对于每一行,执行row.split(“\ t”)`并将每个行项与模式匹配,以在行中找到正确的索引。

4)newRow[correct_index] = oldrow[index] and "" for others