亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將字符串分割成大小相等的部分?

如何將字符串分割成大小相等的部分?

SMILET 2023-08-08 10:49:09
我有一個包含核苷酸序列的字符串。該字符串的長度為 1191 個核苷酸。如何以每行只有 100 個核苷酸的格式打印序列?現在我已經對其進行了硬編碼,但我希望它適用于任何核苷酸串。這是我現在的代碼def printinfasta(SeqName, Sequence, SeqDescription):    print(SeqName + " " + SeqDescription)    #how do I make sure to only have 100 nucleotides per line?    print(Sequence[0:100])    print(Sequence[100:200])    print(Sequence[200:300])    print(Sequence[400:500])    print(Sequence[500:600])    print(Sequence[600:700])    print(Sequence[700:800])    print(Sequence[800:900])    print(Sequence[900:1000])    print(Sequence[1000:1100])    print(Sequence[1100:1191])printinfasta(SeqName, Sequence, SeqDescription)Sequence = "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAATCCATAAATCCCTAAAACCATAATCCTAAATCCCTTAATTCCTAAATCCCTAATACTTAGACCCTAATCTTTAGTTCCTAGACCCTAATCTTTAGTTCCTAGACCCTAAATCCATAATCCTTAATTCCTAAATTCCTAAATCCCTAATACTAAATCTCTAAATCCCTAGCAATTTTCAAGTTTTGCTTGATTGTTGTAGGATGGTCCTTTCTCTTGTTTCTTCTCTGTGTTGTTGAGATTAGTTTGTTTAGGTTTGATAGCGTTGATTTTGGCCTGCGTTTGGTGACTCATATGGTTTGATTGGAGTTTGTTTCTGGGTTTTATGGTTTTGGTTGAAGCGACATTTTTTTGTGGAATATGGTTTTTGCAAAATATTTTGTTCCGGATGAGTAATATCTACGGTGCTGCTGTGAGAATTATGCTATTGTTTT"
查看完整描述

6 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

您可以使用textwrap.wrap將長字符串拆分為字符串列表


import textwrap


seq = "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAATCCATAAATCCCTAAAACCATAATCCTAAATCCCTTAATTCCTAAATCCCTAATACTTAGACCCTAATCTTTAGTTCCTAGACCCTAATCTTTAGTTCCTAGACCCTAAATCCATAATCCTTAATTCCTAAATTCCTAAATCCCTAATACTAAATCTCTAAATCCCTAGCAATTTTCAAGTTTTGCTTGATTGTTGTAGGATGGTCCTTTCTCTTGTTTCTTCTCTGTGTTGTTGAGATTAGTTTGTTTAGGTTTGATAGCGTTGATTTTGGCCTGCGTTTGGTGACTCATATGGTTTGATTGGAGTTTGTTTCTGGGTTTTATGGTTTTGGTTGAAGCGACATTTTTTTGTGGAATATGGTTTTTGCAAAATATTTTGTTCCGGATGAGTAATATCTACGGTGCTGCTGTGAGAATTATGCTATTGTTTT"

print('\n'.join(textwrap.wrap(seq, width=100)))


查看完整回答
反對 回復 2023-08-08
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

您可以使用基于的輔助函數itertools.zip_longest。輔助函數被設計為(也)處理序列不是相等部分大小的精確倍數的情況(最后一組的元素比之前的組少)。

from itertools import zip_longest



def grouper(n, iterable):

? ? """ s -> (s0,s1,...sn-1), (sn,sn+1,...s2n-1), (s2n,s2n+1,...s3n-1), ... """

? ? FILLER = object()? # Value that couldn't be in data.

? ? for result in zip_longest(*[iter(iterable)]*n, fillvalue=FILLER):

? ? ? ? yield ''.join(v for v in result if v is not FILLER)



def printinfasta(SeqName, Sequence, SeqDescription):

? ? print(SeqName + " " + SeqDescription)

? ? for group in grouper(100, Sequence):

? ? ? ? print(group)


Sequence = "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAATCCATAAATCCCTAAAACCATAATCCTAAATCCCTTAATTCCTAAATCCCTAATACTTAGACCCTAATCTTTAGTTCCTAGACCCTAATCTTTAGTTCCTAGACCCTAAATCCATAATCCTTAATTCCTAAATTCCTAAATCCCTAATACTAAATCTCTAAATCCCTAGCAATTTTCAAGTTTTGCTTGATTGTTGTAGGATGGTCCTTTCTCTTGTTTCTTCTCTGTGTTGTTGAGATTAGTTTGTTTAGGTTTGATAGCGTTGATTTTGGCCTGCGTTTGGTGACTCATATGGTTTGATTGGAGTTTGTTTCTGGGTTTTATGGTTTTGGTTGAAGCGACATTTTTTTGTGGAATATGGTTTTTGCAAAATATTTTGTTCCGGATGAGTAATATCTACGGTGCTGCTGTGAGAATTATGCTATTGTTTT"


printinfasta('Name', Sequence, 'Description')

示例輸出:


Name Description

NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

CCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAATCCATAAATCCCTAAAACCATAATCCTAAATCCCTTAATTCCTA

AATCCCTAATACTTAGACCCTAATCTTTAGTTCCTAGACCCTAATCTTTAGTTCCTAGACCCTAAATCCATAATCCTTAATTCCTAAATTCCTAAATCCC

TAATACTAAATCTCTAAATCCCTAGCAATTTTCAAGTTTTGCTTGATTGTTGTAGGATGGTCCTTTCTCTTGTTTCTTCTCTGTGTTGTTGAGATTAGTT

TGTTTAGGTTTGATAGCGTTGATTTTGGCCTGCGTTTGGTGACTCATATGGTTTGATTGGAGTTTGTTTCTGGGTTTTATGGTTTTGGTTGAAGCGACAT

TTTTTTGTGGAATATGGTTTTTGCAAAATATTTTGTTCCGGATGAGTAATATCTACGGTGCTGCTGTGAGAATTATGCTATTGTTTT


查看完整回答
反對 回復 2023-08-08
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

我假設您的序列采用 FASTA 格式。如果是這種情況,您可以使用提供 FASTA 序列包裝實用程序的許多生物信息學軟件包中的任何一個。例如,您可以使用FASTX-Toolkit.?使用命令行實用程序包裝 FASTA 序列FASTA Formatter,例如每行最多 100 個核苷酸:

fasta_formatter?-i?INFILE?-o?OUTFILE?-w?100

您可以FASTX-Toolkit使用安裝包conda,例如:
conda install fastx_toolkit

conda create -n fastx_toolkit fastx_toolkit

請注意,如果您最終從頭開始編寫(簡單)代碼來包裝 FASTA 序列,請記住不應包裝標題行(以 開頭的行>) 。僅包裹序列行。

查看完整回答
反對 回復 2023-08-08
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

你可以使用itertools.zip_longest一些iter魔法來將其寫成一行:


from itertools import zip_longest


sequence = "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAACCCTAAATCCATAAATCCCTAAAACCATAATCCTAAATCCCTTAATTCCTAAATCCCTAATACTTAGACCCTAATCTTTAGTTCCTAGACCCTAATCTTTAGTTCCTAGACCCTAAATCCATAATCCTTAATTCCTAAATTCCTAAATCCCTAATACTAAATCTCTAAATCCCTAGCAATTTTCAAGTTTTGCTTGATTGTTGTAGGATGGTCCTTTCTCTTGTTTCTTCTCTGTGTTGTTGAGATTAGTTTGTTTAGGTTTGATAGCGTTGATTTTGGCCTGCGTTTGGTGACTCATATGGTTTGATTGGAGTTTGTTTCTGGGTTTTATGGTTTTGGTTGAAGCGACATTTTTTTGTGGAATATGGTTTTTGCAAAATATTTTGTTCCGGATGAGTAATATCTACGGTGCTGCTGTGAGAATTATGCTATTGTTTT" 


output = [''.join(filter(None, s)) for s in zip_longest(*([iter(sequence)]*100))]

或者:


for s in zip_longest(*([iter(sequence)]*100)):

    print(''.join(filter(None, s)))


查看完整回答
反對 回復 2023-08-08
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

一個可能的解決方案是使用re模塊。


import re


def splitstring(strg, leng):

    chunks = re.findall('.{1,%d}' % leng, strg)

    for i in chunks:

        print(i)



splitstring(strg = seq, leng = 100))


查看完整回答
反對 回復 2023-08-08
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

cytoolz(可使用安裝)提供了一個可以在此處使用的pip install cytoolz函數:partition_all

#!/usr/bin/env python3

from cytoolz import partition_all


def printinfasta(name, seq, descr):

? ? header = f">{name} {descr}"

? ? print(header)

? ? print(*map("".join, partition_all(100, seq)), sep="\n")



printinfasta("test", 468 * "ACGTGA", "this is a test")

partition_all(100, seq))生成 100 個字母的元組,每個字母取自seq,最后一個較短的字母是字母數不是 100 的倍數。


用于map("".join, ...)將每個此類元組中的字母分組為單個字符串。


前面*的map使其結果被視為 的單獨參數print。


查看完整回答
反對 回復 2023-08-08
  • 6 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號