我需要从字符':'
之前发生的部分中删除字符串,其中':'
可能会多次出现。
例如:
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'
而没有第二个':'
。
有没有办法纠正这个?
此代码也可以在时间和空间复杂性方面更有效吗?
答案 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(':')
为您提供了第一个':'
的索引。