我正在处理一个 vcf 文件。我尝试从此文件中提取信息,但该文件的格式有误。
在这个文件中有一个包含长字符串的列。错误是,该列的某些行中错误地放置了许多制表符和换行符。因此,当我尝试读取此制表符分隔的文件时,所有列都被弄乱了。
我有一个想法如何解决这个问题,但不知道如何在代码中执行它。字符串是 DNA,所以总是有 ATCG。基本上,如果可以在字符 ATCG 中查找多个制表符和换行符并将其删除,则该文件已修复:
ACTGCTGA\t\t\t\t\nCTGATCGA 将变为:ACTGCTGACTGATCGA
因此,需要查看此文件,查找 [ACTG] 后跟制表符或换行符,然后是更多 [ACTG],然后将其替换为空。知道如何做到这一点吗?
with open(file.vcf, 'r') as f:
lines = [l for l in f if not l.startswith('##')]
这是使用正则表达式的一种方法:
首先读取文件:
import re
with open('file.vcf', 'r') as file:
dnafile = file.read()
然后编写一个包含更改的新文件:
with open('fileNew.vcf', 'w') as file:
file.write(re.sub("(?<=[ACTG]{2})((\\t)*(\\n)*)(?=[ACTG]{2})", "", dnafile))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句