栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在某个短语后切字符串?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在某个短语后切字符串?

简短的答案,如@ THC4K在评论中指出:

string.split(pattern, 1)[0]

string
您的原始字符串在哪里,
pattern
是您的“中断”模式,
1
表示分割不超过1次,并且
[0]
表示采用split返回的第一个元素。

实际上:

>>> s = "a descriptor 23 fd">>> s.split("23", 1)[0]'a descriptor '>>> s.split("fdasfdsafdsa", 1)[0]'a descriptor 23 fd'

这是表达我之前写过的内容的一种简短得多的方法,无论如何我都会保留在这里。

而且,如果您需要删除多个模式,那么这是

reduce
内置的最佳选择:

>>> string = "a descriptor dps foo 23 bar fd quux">>> patterns = ["dps", "23", "fd"]>>> reduce(lambda s, pat: s.split(pat, 1)[0], patterns, string)'a descriptor '>>> reduce(lambda s, pat: s.split(pat, 1)[0], patterns, "uiopuiopuiopuipouiop")'uiopuiopuiopuipouiop'

这基本上是说:对于每个

pat
in
patterns
:取
string
并重复应用
string.split(pat,1)[0]
(如上所述),每次都对先前返回的值的结果进行运算。如您所见,如果字符串中没有任何模式,则仍返回原始字符串。


最简单的答案是将列表/字符串切片与组合在一起

string.find

>>> s = "a descriptor 23 fd">>> s[:s.find("fd")]'a descriptor 23 '>>> s[:s.find("23")]  'a descriptor '>>> s[:s.find("gggfdf")] # <-- look out! last character got cut off'a descriptor 23 f'

更好的方法(避免在

s.find
返回-1时切断缺少的模式的最后一个字符)可能是包装一个简单的函数:

>>> def cutoff(string, pattern):...     idx = string.find(pattern)...     return string[:idx if idx != -1 else len(string)]... >>> cutoff(s, "23")'a descriptor '>>> cutoff(s, "asdfdsafdsa")'a descriptor 23 fd'

[:s.find(x)]
语法的装置采取从索引为0的串,直至结肠的右手侧的部分;
在这种情况下,RHS是的结果
s.find
,它返回您传递的字符串的索引。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号