将Ruby转换为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

我正在尝试将我的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/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))