将Ruby转换为Python
我正在尝试将我的ruby脚本转换为python。我对python不是很熟悉,所以我遇到了一个将Ruby转换为Python,python,ruby,regex,Python,Ruby,Regex,我正在尝试将我的ruby脚本转换为python。我对python不是很熟悉,所以我遇到了一个TypeError 打印机.rb python错误 Traceback(最近一次调用last):文件“printer.py”,第16行,在 打印租约列表.sort(key=lambda str:re.split(r“\d+”,str))文件“printer.py”,第16行,in 打印租约列表.sort(key=lambda str:re.split(r“\d+”,str))文件 “/System/Lib
TypeError
打印机.rb
python错误
Traceback(最近一次调用last):文件“printer.py”,第16行,在
打印租约列表.sort(key=lambda str:re.split(r“\d+”,str))文件“printer.py”,第16行,in
打印租约列表.sort(key=lambda str:re.split(r“\d+”,str))文件
“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py”,
第171行,拆分
返回编译(模式、标志)。拆分(字符串、maxsplit)类型错误:应为字符串或缓冲区
问题在于:
print lease_list.sort(key=lambda str: re.split(r"\d+", str))
str
名称[编辑:请参阅问题编辑历史],通常不应将其用作名称(即使是一次性的),它被分配了列表中包含的值,并因此传递给re。split()
是类型为Lease
的对象:
这不是re.split
的参数,它喜欢咀嚼str
s。因此出现了类型错误
Lease
有两个属性,它们是行后面的str
s。拆分('-')
:
在re.split()
中使用其中一个选项(以您的用例所需的为准),同时使用:
或:
忘了提及,使用list对列表进行排序。sort
将返回None
,因为它对列表进行了排序,在此处打印值没有任何用处。问题在于:
print lease_list.sort(key=lambda str: re.split(r"\d+", str))
str
名称[编辑:请参阅问题编辑历史],通常不应将其用作名称(即使是一次性的),它被分配了列表中包含的值,并因此传递给re。split()
是类型为Lease
的对象:
这不是re.split
的参数,它喜欢咀嚼str
s。因此出现了类型错误
Lease
有两个属性,它们是行后面的str
s。拆分('-')
:
在re.split()
中使用其中一个选项(以您的用例所需的为准),同时使用:
或:
忘记提及,使用list对列表进行排序。sort
将返回None
,因为它对列表进行了排序,所以在此处打印值没有任何用处。这不是语法错误,而是类型错误。语法错误显示为SyntaxError
。是的,有一个显著的区别。@AvinashRaj在排序中,我试图找到单位属性的十进制值,并按其排序,将最后一行上的lease.unit
替换为lease.property
,现在您已经更改了代码,这个错误没有意义这不是语法错误,而是类型错误。语法错误显示为SyntaxError
。是的,有一个显著的区别。@AvinashRaj在排序中,我试图找到单位属性的十进制值,并按其排序,将最后一行上的lease.unit
替换为lease.property
,现在您已经更改了代码,错误没有意义了打印出来None
啊,是的,sort
就地排序,返回None
。不过,您传入的列表已排序。它将打印出None
Ah yes,sort
就地排序,返回None
。不过,您传入的列表已排序。
Traceback (most recent call last): File "printer.py", line 16, in
<module>
print lease_list.sort(key=lambda str: re.split(r"\d+", str)) File "printer.py", line 16, in <lambda>
print lease_list.sort(key=lambda str: re.split(r"\d+", str)) File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py",
line 171, in split
return _compile(pattern, flags).split(string, maxsplit) TypeError: expected string or buffer
print lease_list.sort(key=lambda str: re.split(r"\d+", str))
lease_list.append(Lease(l,m))
self.renter = renter
self.property = unit
print lease_list.sort(key=lambda obj: re.split(r"\d+", obj.renter))
print lease_list.sort(key=lambda obj: re.split(r"\d+", obj.property))