如何从 .vcf 文件中删除错误的 tabs/new 行?
How to remove erronous tabs/new line from .vcf file?
我正在使用 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))
我正在使用 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))