在角色多次出现的情况下,在特定字符之前剥去字符串的一部分

时间:2016-11-24 03:13:24

标签: python python-2.7 python-3.x

我需要从字符':'之前发生的部分中删除字符串,其中':'可能会多次出现。 例如:

input: 'Mark: I am sending the file: abc.txt'
output: 'I am sending the file: abc.txt'

我的功能就是这个(Python代码)

def process_str(in_str):
    str_list = in_str.split(':')[1:]
    out_str = ''
    for each in str_list:
        out_str += each
    return out_str

我得到的输出是'I am sending the file abc.txt'而没有第二个':'。 有没有办法纠正这个? 此代码也可以在时间和空间复杂性方面更有效吗?

3 个答案:

答案 0 :(得分:3)

如何使用split()

str = 'Mark: I am sending the file: abc.txt'
print(str.split(':', 1)[-1])

如果分隔符不在初始字符串中,则使用-1来说明列表索引超出范围

<强>输出:

I am sending the file: abc.txt'

尝试here

答案 1 :(得分:1)

split不是最佳方法。您想使用正则表达式。

import re

def process_str(in_str):
  return re.sub('^.*?: ', '', in_str)

这将返回没有任何内容的字符串,直到第一个:(冒号后跟空格)。您可以阅读有关Python正则表达式here的更多信息。

答案 2 :(得分:0)

你想要的是out_str = ':'.join(in_str.split(':')[1:]):因为你剥离了所有':',你需要重新插入它们。

更好的方法可能是使用out_str = in_str[in_str.find(':')+1:]find(':')为您提供了第一个':'的索引。