Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在字符串中插入空格_Python_Python 3.x - Fatal编程技术网

Python在字符串中插入空格

Python在字符串中插入空格,python,python-3.x,Python,Python 3.x,好的,我正在为学校做一个小项目,一个6帧的翻译。我不想说太多细节,我只想描述一下我想补充的内容。 正常输出类似于: TTCPTISPALGLAWS_DLGTLGFMSYSANTASGETLVSLYQLGLFEM_VVSYGRTKYYLICP_LFHLSVGFVPSD 这个字符串的重要部分是M和u(起始密码子和终止密码子,生物学的东西)。我想做的是这样强调这些: TTCPTISPALGLAWS_DLGTLGF 'MSYSANTASGETLVSLYQLGLFEM_' VVSYGRTKYYLICP_

好的,我正在为学校做一个小项目,一个6帧的翻译。我不想说太多细节,我只想描述一下我想补充的内容。 正常输出类似于:

TTCPTISPALGLAWS_DLGTLGFMSYSANTASGETLVSLYQLGLFEM_VVSYGRTKYYLICP_LFHLSVGFVPSD
这个字符串的重要部分是M和u(起始密码子和终止密码子,生物学的东西)。我想做的是这样强调这些:

TTCPTISPALGLAWS_DLGTLGF 'MSYSANTASGETLVSLYQLGLFEM_' VVSYGRTKYYLICP_LFHLSVGFVPSD
现在(对我来说)这是一个棘手的问题,我让我的输出看起来像这样(添加一个空格和一个“
以突出显示开始和停止)。但它只做一次,这是它发现的第一次启动和停止。如果有任何其他M…..\u组合,则不会突出显示它们

以下是我当前的代码,试图使其多次突出显示:

def start_stop(translation):
index_2 = 0
while True:
    if 'M' in translation[index_2::1]:
        index_1 = translation[index_2::1].find('M')
        index_2 = translation[index_1::1].find('_') + index_1
        new_translation = translation[:index_1] + " '" + \
                          translation[index_1:index_2 + 1] + "' " +\
                          translation[index_2 + 1:]
    else:
        break
    return new_translation
我真的以为这样就行了,我猜不行。所以现在我发现自己被卡住了。 如果你们中有人愿意尝试并提供帮助,下面是一个随机生成的字符串,其中包含多个M…..\uuu集:

'TTCPTISPALGLAWS_DLGTLGFMSYSANTASGETLVSLYQLGLFEM_VVSYGRTKYYLICP_LFHLSVGFVPSDGRRLTLYMPPARRLATKSRFLTPVISSG_DKPRHNPVARSQFLNPLVRPNYSISASKSGLRLVLSYTRLSLGINSLPIERLQYSVPAPAQITP_IPEHGNARNFLPEWPRLLISEPAPSVNVPCSVFVVDPEHPKAHSKPDGIANRLTFRWRLIG_VFFHNAL_VITHGYSRVDILLPVSRALHVHLSKSLLLRSAWFTLRNTRVTGKPQTSKT_FDPKATRVHAIDACAE_QQH_PDSGLRFPAPGSCSEAIRQLMI'

感谢所有愿意提供帮助的人:)

正则表达式在这里非常方便:

import re
sequence = "TTCP...."
highlighted = re.sub(r"(M\w*?_)", r" '\1' ", sequence)

# Output:
"TTCPTISPALGLAWS_DLGTLGF 'MSYSANTASGETLVSLYQLGLFEM_' VVSYGRTKYYLICP_LFHLSVGFVPSDGRRLTLY 'MPPARRLATKSRFLTPVISSG_' DKPRHNPVARSQFLNPLVRPNYSISASKSGLRLVLSYTRLSLGINSLPIERLQYSVPAPAQITP_IPEHGNARNFLPEWPRLLISEPAPSVNVPCSVFVVDPEHPKAHSKPDGIANRLTFRWRLIG_VFFHNAL_VITHGYSRVDILLPVSRALHVHLSKSLLLRSAWFTLRNTRVTGKPQTSKT_FDPKATRVHAIDACAE_QQH_PDSGLRFPAPGSCSEAIRQLMI"
正则表达式解释:
我们寻找一个
M
,后跟任意数量的“单词字符”
\w*
,然后是一个
\uu
,使用
使其成为非贪婪匹配(否则它只会从第一个
M
到最后一个
\u
)组。

替换的是匹配的组(
\1
表示“第一组”,只有一个),但被空格和引号包围

您只需要“切片”模块的一小部分,不需要任何外部模块:

Python字符串有一个名为“index”的方法,只需使用它即可

输出:


有一个布尔值指示您已经开始(遇到了一个
M
)和一个布尔值指示您何时结束不是更容易吗(遇到了一个
。因此,与
while true
相反,只需在字符串上迭代,通过播放
if
语句和布尔值,您就可以很容易地知道您在序列中的时间,当序列结束时,布尔值可以帮助您跟踪正在发生的事情,这样您不仅可以执行一个序列,还可以执行许多序列。希望如此s使senseI认为这是一个很好的正则表达式应用,正如tzaman的回答一样,但您的代码不替换多个实例的原因是,在第一次替换之后,您将返回
语句,因此您永远不会到达
while
循环的下一次迭代。您可能打算将返回行删除一级l、 代码还有其他问题,但这是您直接提出问题的原因。哇,这很有效,非常感谢!(我会在它允许的时候给您评分)。我仍然需要学习您可以导入的所有内容,因此感谢您教我另一个:)不客气!Regex是一个非常通用且功能强大的工具,用于处理所有语言中的字符串,不仅仅是Python,我强烈建议您多读一点。
string_1='TTCPTISPALGLAWS_DLGTLGFMSYSANTASGETLVSLYQLGLFEM_VVSYGRTKYYLICP_LFHLSVGFVPSD'

before=string_1.index('M')
after=string_1[before:].index('_')
print('{}  {} {}'.format(string_1[:before],string_1[before:before+after+1],string_1[before+after+1:]))
TTCPTISPALGLAWS_DLGTLGF  MSYSANTASGETLVSLYQLGLFEM_ VVSYGRTKYYLICP_LFHLSVGFVPSD