python到php代码转换
我必须将两个Python函数翻译成PHP。第一个是:python到php代码转换,php,python,converter,Php,Python,Converter,我必须将两个Python函数翻译成PHP。第一个是: def listspaces(string): return [i -1 for i in range(len(string)) if string.startswith(' ', i-1)] 我假设这将检查所提供字符串中的空格,并在找到第一个空格时返回True,是否正确 这里的i-1是什么?是不是-1 在PHP中,我们对数组使用[]。这里是带有返回的[],此函数将返回true或false或空格位置数组吗 第二个功能是 de
def listspaces(string):
return [i -1 for i in range(len(string)) if string.startswith(' ', i-1)]
我假设这将检查所提供字符串中的空格,并在找到第一个空格时返回True,是否正确
这里的i-1
是什么?是不是-1
在PHP中,我们对数组使用[]
。这里是带有返回的[]
,此函数将返回true或false或空格位置数组吗
第二个功能是
def trimcopy(copy, spaces, length=350):
try:
if len(copy) < length:
return copy
else:
loc = 0
for space in spaces:
if space < length:
loc = space
else:
return copy[:loc]
except :
return None
def trimpcopy(复制,空格,长度=350):
尝试:
如果长度(副本)<长度:
返回副本
其他:
loc=0
对于空间中的空间:
如果空间<长度:
loc=空间
其他:
返回副本[:loc]
除:
一无所获
空格中的空格是什么:这是什么?返回副本[:loc]为什么不测试这些函数看看它们在做什么
listspaces(string)
返回一个数组,其中包含字符串中所有空格的位置:
$ ipython
IPython 0.10.2 -- An enhanced Interactive Python.
In [1]: def listspaces(string):
...: return [i -1 for i in range(len(string)) if string.startswith(' ', i-1)]
...:
In [2]: listspaces('Hallo du schöne neue Welt!')
Out[2]: [5, 8, 16, 21]
(i-1
是开始以零计数时空格的位置)
我对Python了解不多,也不能粘贴第二个函数,因为有太多的“IndentationError”
我认为trimpcopy()
将返回一个字符串(来自inputcopy
),其中数组空格
(显然是listspaces()
的返回值)中最后一个空格位置后面的所有内容都将被修剪,除非输入长度不超过长度。
换句话说:输入在小于长度的最高空间位置被切断
在上面的例子中,部件“Welt!”代码>将被切断:
s = 'Hallo du schöne neue Welt!'
trimcopy( s, listspaces( s ) )
/* should return: 'Hallo du schöne neue' */
为什么不测试一下这些函数,看看它们在做什么
listspaces(string)
返回一个数组,其中包含字符串中所有空格的位置:
$ ipython
IPython 0.10.2 -- An enhanced Interactive Python.
In [1]: def listspaces(string):
...: return [i -1 for i in range(len(string)) if string.startswith(' ', i-1)]
...:
In [2]: listspaces('Hallo du schöne neue Welt!')
Out[2]: [5, 8, 16, 21]
(i-1
是开始以零计数时空格的位置)
我对Python了解不多,也不能粘贴第二个函数,因为有太多的“IndentationError”
我认为trimpcopy()
将返回一个字符串(来自inputcopy
),其中数组空格
(显然是listspaces()
的返回值)中最后一个空格位置后面的所有内容都将被修剪,除非输入长度不超过长度。
换句话说:输入在小于长度的最高空间位置被切断
在上面的例子中,部件“Welt!”代码>将被切断:
s = 'Hallo du schöne neue Welt!'
trimcopy( s, listspaces( s ) )
/* should return: 'Hallo du schöne neue' */
第一个函数返回给定字符串中所有空格的索引
范围(len(string))
在列表中,数字从0到输入字符串的长度
如果为每个索引i
计算string.startswith('',i-1)]
条件,则当字符串(此处不是关键字)在索引i-1所给位置以''开头时,返回true
结果正如feela所公布的那样
对于第二个函数,我不知道空格参数是什么
希望这将帮助您创建一个PHP版本 第一个函数返回给定字符串中所有空格的索引
范围(len(string))
在列表中,数字从0到输入字符串的长度
如果为每个索引i
计算string.startswith('',i-1)]
条件,则当字符串(此处不是关键字)在索引i-1所给位置以''开头时,返回true
结果正如feela所公布的那样
对于第二个函数,我不知道空格参数是什么
希望这将帮助您创建一个PHP版本 我认为这类转换的一个好方法是:
- 找出代码在做什么
- 在Python中将其重构为PHP风格(这使您能够检查逻辑是否仍然有效,例如使用断言测试)。e、 g.将列表理解转换为for循环
- 转换为PHP
例如,listspaces(string)
返回空间在string
中的位置,尽管使用列表理解是Pythonic的,但它不是很“PHP”的
第二个例子,trimpcopy
相当棘手(因为尝试,除了可能有意捕获一些预期的-对于编写者(!)-异常-两种可能的情况是string
没有len
和spaces
包含长度大于len(copy)
)的值,但很难说用Python进行重构并进行测试是个好主意
您可以在PHP中使用copy[:loc]
进行数组切片
注意:通常在Python中,我们会显式地声明要防御的异常(与之相反) 我认为这类转换的一个好方法是:
- 找出代码在做什么
- 在Python中将其重构为PHP风格(这使您能够检查逻辑是否仍然有效,例如使用断言测试)。e、 g.将列表理解转换为for循环
- 转换为PHP
例如,listspaces(string)
返回空间在string
中的位置,尽管使用列表理解是Pythonic的,但它不是很“PHP”的
第二个例子,trimpcopy
相当棘手(因为尝试,除了可能有意捕获一些预期的-对于编写者(!)-异常-两种可能的情况是string
没有len
和spaces
包含长度大于len(copy)
)的值,但很难说用Python进行重构并进行测试是个好主意
您可以在PHP中使用copy[:loc]
进行数组切片
注:通常用Py表示
def listspaces(str):
return [i for i, c in enumerate(str) if c==' ']
function listspaces($str) {
$spaces = array();
foreach (str_split($str) as $i => $chr)
if ($chr == ' ') $spaces[] = $i;
return $spaces;
}
function trimcopy($copy, $spaces, $length=350) {
if (strlen($copy) < $length) {
return $copy;
} else {
foreach ($spaces as $space) {
if ($space < $length) {
$loc = $space;
} else {
return substr($copy, 0, $loc);
}
}
}
}