提取字符串的百分比

时间:2014-05-27 02:04:06

标签: python string slice

我正在寻找一个python代码,它将识别氨基酸序列的长度(以字符串形式输入),以及字符串的前20%,字符串的最后20%,以及中间60%的字符串。

我知道我可以使用切片,但你必须知道要提取的字符串序列的确切位置(例如,[0:20] - >将字符串从位置1返回到20)。有没有人对如何做到这一点有任何想法?谢谢!

3 个答案:

答案 0 :(得分:3)

你仍然可以使用切片。先找出字符串的长度。

length = len(your_string)

first = your_string[:int(length*0.2)]
middle = your_string[int(length*0.2):int(length*0.8)]
last = your_string[int(length*0.8):]

这是python解释器输出:

>>> your_string = '1234567890'
>>> length = len(your_string)
>>> 
>>> first = your_string[:int(length*0.2)]
>>> middle = your_string[int(length*0.2):int(length*0.8)]
>>> last = your_string[int(length*0.8):]
>>> 
>>> print (first, middle, last)
('12', '345678', '90')

请注意,在所有情况下,前20%和后20%的长度可能不同。例如,大小为11的输入字符串将包含前两个字符的两个字符,以及最后20%的三个字符。

答案 1 :(得分:0)

您可以在函数中定义将字符串作为参数

的所有内容

你可以这样做

def amino(string):
    L=len(string)
    twenty = (20 * L) / 100
    sixty  = (60 * L) / 100
    print(string[:int(twenty)])
    print(string[int(twenty):int(twenty+sixty)])
    print(string[int(twenty+sixty):])

答案 2 :(得分:0)

你可以这样做:

def amino_acid_sequence(string):
    first = int(len(string) * 0.2)
    middle = int(len(string) * 0.6)
    return (string[:first], string[first:first + middle], string[first + middle:])

和测试结果:

>>> amino_acid_sequence('1234567890')
('12', '345678', '90')
>>> amino_acid_sequence('1234567890a')
('12', '345678', '90a')
>>> amino_acid_sequence('1234567890ab')
('12', '3456789', '0ab')

希望这可以帮到你。