gpt4 book ai didi

python - 每2000个字符提取字符并保存文件

转载 作者:行者123 更新时间:2023-11-28 18:44:42 25 4
gpt4 key购买 nike

我需要为一个程序做一个输入,这真的超出了我的编程技能,这就是我没有尝试任何东西的原因。希望你能帮帮我。

我有很多文本文件,以符号“>”开头,一个样本名称,一个换行符,然后是每个样本的 0 和 1 数据。

数据看起来像这样(实际上要大得多):

 >SampleName_ZN189A
01000001000000000000100011100000000111000000001000
00110000100000000000010000000000001100000010000000
00110000000000001110000010010011111000000100010000
00000110000001000000010100000000010000001000001110
>SampleName_ZN189B
00110000001101000001011100000000000000000000010001
00010000000000000010010000000000100100000001000000
00000000000000000000000010000000000010111010000000
01000110000000110000001010010000001111110101000000

注意:每 50 个字符后有一个换行符。

我需要做的是:

提取我文件中每个样本数据的前 2000 个字符,并使用相同的名称保存它,后跟一个窗口编号。例如,如果此文件名为:Testfile_1.txt,它应该如下所示(我提取了数据的前 50 个字符):

 >SampleName_ZN189A
01000001000000000000100011100000000111000000001000
>SampleName_ZN189B
00110000001101000001011100000000000000000000010001

这个文件应该这样命名:Testfile_1_window1.txt

现在,第二个窗口应该从字符 1500 开始到字符 3500,即 Testfile_1_window2.txt,第三个文件从字符 3000 到 5000 名称为 Testfile_1_window3.txt 等等...但是如果最后一个窗口有少于 2000 个字符,这些字符应添加到最后一个窗口。

也就是说,通过 2000 个字符的窗口和 500 个字符的重叠。

提前致谢。

注意2:

如果您认为可以使用 perl 或 python 解决此问题,请同时发布您的答案。

最佳答案

在 Perl 中你可以这样做,它看起来不太有效,但它可以工作,因为操作系统会缓存文件。

use strict;use warnings;
local $/='>';
open(my $fh,'<','filename') or die $!;
while (my $chunk = <$fh>){
chomp($chunk);
$chunk =~ s!^(.+?)\n+!!is;
my $samplename = $1;
### how many should be a constant or should be calculated on the fly, currently I set it to 50
for(my $i=0;$i<50;$i++){
my $data = substr($chunk,$i*1500,$i*1500+2000);
next if ! $data;##skip if there is not data
my $filename = "Testfile_".$samplename."_window".$i.".txt";
open(my $ofh,'>',$filename) or die $filename,$!;
print $ofh "<$samplename\n$data\n";
close($ofh);
}
}
close($fh);

关于python - 每2000个字符提取字符并保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21854140/

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