Php 相当于 Python 中的 substr 和 strpos
Php equivalent of substr and strpos in Python
我尝试将此 php 函数转换为 Python:
function trouveunebrique($contenu, $debut, $fin) {
$debutpos = strpos($contenu, $debut);
$finpos = strpos($contenu, $fin, $debutpos);
if ($finpos == 0) {
$finpos = strlen($contenu);
}
$nbdebut = strlen($debut);
if ($debutpos > 0) {
$trouveunebrique = substr($contenu, ($debutpos + $nbdebut), ($finpos - $debutpos - $nbdebut));
}
else {
$trouveunebrique = "";
}
return (trim($trouveunebrique));
}
我搜索了 here 但找不到解决方案。
我也试过这个:
def trouveunebrique(contenu, debut, fin)
debutpos = haystack.find(contenu, debut)
finpos = haystack.find(contenu, fin)
if (finpos == 0)
finpos = len(contenu)
nbdebut = len(debut)
if (debutpos > 0):
trouveunebrique = substr(contenu, (debutpos + nbdebut), (finpos - debutpos - nbdebut))
else:
trouveunebrique = ""
return trouveunebrique.strip()
要获取 Python 中的子字符串(以及与此相关的任何子序列),请使用 slice notation,这类似于索引,但在括号之间至少包含一个冒号:
>>> "Hello world"[4:7]
'o w'
>>> "Hello world"[:3]
'Hel'
>>> "Hello world"[8:]
'rld'
您已经想出了等效的 strpos():str.find() 字符串对象上的方法。另请注意,您可以像在 PHP 函数中那样为其提供额外的索引:
debutpos = contentu.find(debut)
# ...
finpos = contenu.find(fin, debutpos)
它 returns -1 当没有找到子字符串时。否则,它的行为相当于 PHP。
所以如果我没理解错的话,你想在 contenu
中找到一个以 debut
开始并以 fin
结束的子串?
所以如果你设置
>>> str = "abcdefghi"
>>> debut = "bcd"
>>> fin = "hi"
您想做的事:
>>> trouveunebrique(str, debut, fin)
bcdefghi
如果是这样,您正在寻找的是 (string).find
,它的行为类似于您的 strpos
因此您的方法将如下所示:
def trouveunebrique(contenu, debut, fin):
indice_debut = contenu.find(debut)
indice_fin = contenu.find(fin)
return contenu[indice_debut : indice_fin + len(fin)]
或者简而言之:
def trouveunebrique(contenu, debut, fin):
return contenu[contenu.find(debut):contenu.find(fin) + len(fin)]
此外,由于您希望 fin
位于 debut
之后,因此以下内容应该有效:
def trouveunebrique(contenu, debut, fin):
indice_debut = contenu.find(debut) # find the first occurence of "debut"
indice_fin = contenu[indice_debut:].find(fin) # find the first occurence of "fin" after "debut"
return contenu[indice_debut : indice_debut + indice_fin + len(fin)]
我尝试将此 php 函数转换为 Python:
function trouveunebrique($contenu, $debut, $fin) {
$debutpos = strpos($contenu, $debut);
$finpos = strpos($contenu, $fin, $debutpos);
if ($finpos == 0) {
$finpos = strlen($contenu);
}
$nbdebut = strlen($debut);
if ($debutpos > 0) {
$trouveunebrique = substr($contenu, ($debutpos + $nbdebut), ($finpos - $debutpos - $nbdebut));
}
else {
$trouveunebrique = "";
}
return (trim($trouveunebrique));
}
我搜索了 here 但找不到解决方案。 我也试过这个:
def trouveunebrique(contenu, debut, fin)
debutpos = haystack.find(contenu, debut)
finpos = haystack.find(contenu, fin)
if (finpos == 0)
finpos = len(contenu)
nbdebut = len(debut)
if (debutpos > 0):
trouveunebrique = substr(contenu, (debutpos + nbdebut), (finpos - debutpos - nbdebut))
else:
trouveunebrique = ""
return trouveunebrique.strip()
要获取 Python 中的子字符串(以及与此相关的任何子序列),请使用 slice notation,这类似于索引,但在括号之间至少包含一个冒号:
>>> "Hello world"[4:7]
'o w'
>>> "Hello world"[:3]
'Hel'
>>> "Hello world"[8:]
'rld'
您已经想出了等效的 strpos():str.find() 字符串对象上的方法。另请注意,您可以像在 PHP 函数中那样为其提供额外的索引:
debutpos = contentu.find(debut)
# ...
finpos = contenu.find(fin, debutpos)
它 returns -1 当没有找到子字符串时。否则,它的行为相当于 PHP。
所以如果我没理解错的话,你想在 contenu
中找到一个以 debut
开始并以 fin
结束的子串?
所以如果你设置
>>> str = "abcdefghi"
>>> debut = "bcd"
>>> fin = "hi"
您想做的事:
>>> trouveunebrique(str, debut, fin)
bcdefghi
如果是这样,您正在寻找的是 (string).find
,它的行为类似于您的 strpos
因此您的方法将如下所示:
def trouveunebrique(contenu, debut, fin):
indice_debut = contenu.find(debut)
indice_fin = contenu.find(fin)
return contenu[indice_debut : indice_fin + len(fin)]
或者简而言之:
def trouveunebrique(contenu, debut, fin):
return contenu[contenu.find(debut):contenu.find(fin) + len(fin)]
此外,由于您希望 fin
位于 debut
之后,因此以下内容应该有效:
def trouveunebrique(contenu, debut, fin):
indice_debut = contenu.find(debut) # find the first occurence of "debut"
indice_fin = contenu[indice_debut:].find(fin) # find the first occurence of "fin" after "debut"
return contenu[indice_debut : indice_debut + indice_fin + len(fin)]