[英]Strip string after third occurrence of character python
我想在第三个字符后删除所有字符,例如 - 比如说。
我在网上发现了这个代码并且它有效,但是我无法学习它是如何工作的并且想要问我所以我能完全理解它。
def indexList(s, item, i=0):
"""
Return an index list of all occurrances of 'item' in string/list 's'.
Optional start search position 'i'
"""
i_list = []
while True:
try:
i = s.index(item, i)
i_list.append(i)
i += 1
except:
break
return i_list
def strip_chrs(s, subs):
for i in range(indexList(s, subs)[-1], len(s)):
if s[i+1].isalpha():
return data[:i+1]
data = '115Z2113-3-777-55789ABC7777'
print strip_chrs(data, '-')
这是我关于while的问题:行什么是真的? 另外除了:除了什么? 为什么在那里编码?
提前致谢!
这是一种方式:
def trunc_at(s, d, n=3):
"Returns s truncated at the n'th (3rd by default) occurrence of the delimiter, d."
return d.join(s.split(d, n)[:n])
print trunc_at("115Z2113-3-777-55789ABC7777", "-")
这个怎么运作:
s.split(d)
在每次出现分隔符d
将字符串s
拆分为列表。 我们使用第二个参数进行split
以指示要执行的最大拆分数(因为在前n
次之后没有理由继续拆分)。 结果是一个列表,例如["115Z2113", "3", "777", "55789ABC7777"]
[:n]
获取列表的前n
项的切片。 结果是另一个列表,例如["115Z2113", "3", "777"]
d.join(...)
将分隔符d
放在列表的每个项目之间,从而产生例如"115Z2113-3-777"
以单行方式:
data = '115Z2113-3-777-55789ABC7777'
strip_character = "-"
>>> strip_character.join(data.split(strip_character)[:3])
'115Z2113-3-777'
这条线
while True:
创造一个无限循环。 它只是继续循环,直到程序崩溃或break
为止。 except
行是一个异常处理程序,它将捕获任何异常,此时break
被称为退出无限循环。
在“while True”中,True只是常量值True。 因此,虽然True是永久循环或直到破碎。
除了使用s.index在i之后找不到更多字符串作为打破循环的方法时发生的异常。 这是一件坏事。
尝试这样的事情(伪代码):
while you still have string left:
get index of next '-'
if found, add 1 to count
if count == 3:
return s[index+1:]
s[index+1:]
返回索引后面字符的子字符串到结尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.