![](/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.