gpt4 book ai didi

python - 如何使用 Python 将文本文件中的空格替换为分号?

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:07 26 4
gpt4 key购买 nike

我有一个包含许多分隔值的大文本文件。但是文本文件中的值由空格和分号分隔。下面是一些在 Unix 中使用 Less 命令的行:

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT
chr7 149601 MERGED_DEL_2_39754 T . 141.35 . AC=0;AF=0.00;AN=2;DP=37;MQ=37.00;MQ0=0;1000gALT=<DEL>;AF1000g=0.09
chr7 149616 rs190051229 C . 108.65 . AC=0;AF=0.00;AN=2;DP=35;MQ=37.00;MQ0=0;1000gALT=T;AF1000g=0.00
chr7 149628 rs3814456 A . 129.31 . AC=0;AF=0.00;AN=2;DP=37;MQ=37.00;MQ0=0;1000gALT=G;AF1000g=0.14
chr7 149634 rs146001818 G T 1375.63 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.456;DP=39;Dels=0.00;FS=0.000;HRun=0;HaplotypeScore=0.9997;MQ=37.00;MQ0=0;MQRankSum=1.641;QD=35.27;ReadPosRankSum=1.459;1000gALT=T;AF1000g=0.01

我希望能够用分号替换 chr7 旁边的空格。然后我想在POS值内选择一定范围内的线,例如:149601到149628(前三行),所以我可以计算AF100g在这个范围内的总值(本例中前三行为0.24) ).

我该怎么做?

最佳答案

我不太明白你所说的“相差 30 或更少”是什么意思。因为第 1 行(149601)和第 2 行(149616)相差 15,这里已经小于 30。

现在获取您想要的值(假设您正在遍历文件并将每一行存储在名为 line 的变量中):

POS:我建议先用一个空格替换所有空格,然后使用这个空格将字符串拆分成多个部分 (line = re.sub(r"+", r"", line))。第二个元素将是您的 POS 值 (pos = int(line.split("")[1]))。

AF 值:只需使用正则表达式搜索关键字:float(re.match(r".*?AF1000g=(.*?)\s.*?", line).groups( )[0])

保留一个全局变量,在每个循环步骤中将您的个人 AF 值相加。当达到您想要的条件时,打印相加的 AF 值。继续将之前的 POS 值保存在循环外的变量中,并取两个 pos 值之间的差值。如果您想要一个正值,请记住使用 abs()

关于python - 如何使用 Python 将文本文件中的空格替换为分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30153896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com