1

我有一个 BED 间隔文件,我正在尝试使用 Galaxy 在线工具处理它。目前,文件中的每一行都以一个数字(代表染色体编号)开头。为了正确上传,我需要每行以“chr”开头,然后是数字。因此,例如以“2L”开头的行,我需要进行更改,以便它们以“chr2L”开头,并对以数字开头的所有其他行执行相同操作(不仅仅是 2L,还有许多不同的数字)。我在想如果我可以在每一行的开头添加一个“chr”而不影响其他列,那会很棒,但我不知道该怎么做(对python来说很新)你能帮我吗出去?

谢谢。

4

2 回答 2

3

http://docs.python.org/2/library/stdtypes.html#file.writelines

with open('bed-interval') as f1, open('bed-interval-modified', 'w') as f2:
    f2.writelines('chr' + line for line in f1)
于 2013-06-17T16:05:29.700 回答
1

第一步 打开文件

  file = open("somefile.txt")

第 2 步获取线路

  lines = list(file.readlines())
  file.close()

第 3 步使用列表推导

   new_lines = ["chr"+line for line in lines]

第 4 步将新行写回文件

   with open("somefile.txt","w") as f:
       f.writelines(new_lines)

为了不将所有行存储在内存中

   file1 = open("some.txt")
   file2 = open("output.txt","w")

   for line in file1:
       print >> file2, "chr"+ line

   file1.close()
   file2.close()

然后只需复制output.txt到您的原始文件名

于 2013-06-17T16:05:08.363 回答