【发布时间】:2014-05-27 02:04:06
【问题描述】:
我正在寻找一个 python 代码来识别氨基酸序列的长度(作为字符串输入),以及字符串的前 20%、字符串的后 20%,以及字符串的中间 60%。
我知道我可以使用切片,但是您必须知道要提取的字符串序列的确切位置(例如,[0:20]-->从位置 1 到 20 返回字符串)。有人对如何做到这一点有任何想法吗?谢谢!
【问题讨论】:
我正在寻找一个 python 代码来识别氨基酸序列的长度(作为字符串输入),以及字符串的前 20%、字符串的后 20%,以及字符串的中间 60%。
我知道我可以使用切片,但是您必须知道要提取的字符串序列的确切位置(例如,[0:20]-->从位置 1 到 20 返回字符串)。有人对如何做到这一点有任何想法吗?谢谢!
【问题讨论】:
您仍然可以使用切片。只需先弄清楚字符串的长度即可。
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% 有两个字符,后 20% 有三个字符。
【讨论】:
middle = your_string[int(length*0.2):int(length*0.8)]。请注意输出中缺少的“78”。
您可以在将字符串作为参数的函数中定义所有内容
你可以这样做
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):])
【讨论】:
你可以这样做:
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')
希望对你有帮助。
【讨论】: