![](/img/trans.png)
[英]Pandas: find start and end position of substring in string
[英]find position of a substring in a string
我有一个格式的python字符串
mystr = "hi.this(is?my*string+"
在这里,我需要获得被特殊字符或非字母字符包围的'is'的位置(即本例中的第二个'是')。 但是,使用
mystr.find('is')
如果'is'与'this'相关联,则返回该位置,这是不希望的。 如何找到字符串中非字母字符包围的子字符串的位置? 使用python 2.7
这里最好的选择是使用正则表达式。 Python具有用于处理正则表达式的re
模块 。
我们使用简单的搜索来找到"is"
的位置:
>>> match = re.search(r"[^a-zA-Z](is)[^a-zA-Z]", mystr)
这会将第一个匹配作为匹配对象返回。 然后我们简单地使用MatchObject.start()
来获取起始位置:
>>> match.start(1)
8
编辑:一个好点,我们使"is"
一个组并匹配该组以确保我们获得正确的位置。
正如评论中所指出的,这做了一些假设。 一个是包围意味着"is"
不能在字符串的开头或结尾,如果是这种情况,则需要不同的正则表达式,因为这只匹配包围的字符串。
另一个是,这将数字视为特殊字符 - 你说的是非字母的 ,我用它来表示包含的数字。 如果您不想计算数字,那么使用r"\\b(is)\\b"
是正确的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.