-2

我正在尝试一个你必须使用的函数def function(a,b,c,d) a 是一个字符串,所以我做了

a = str(a)

b 是一个整数,所以我做了

b= int(b)

c 也是一个字符串;

c = str(c)

并且 d 是一个布尔值(我所知道的布尔值是 True 或 False);所以

d = True

我想将元素的顺序更改为

[c,a,b,d]

result = [c,a,b,d] 当我使用返回功能时,我将其分配给

return str(result), (because i want to return a string)

我结束了

"[ 'c', 'a', b, d]"

我已经尝试了一切来摆脱 ' ' 以及间距,因为它应该看起来像

'[c,a,b,d]'

我该怎么做才能删除它?

def elem(tree,year,ident,passed):
    tree = str(tree)
    year = int(year)
    ident = str(ident)
    passed = True
    result = [ident,tree,year,passed]
    return str(result)

这就是我到目前为止所做的

所以如果我想测试到目前为止我在 python shell 中的代码,我最终会得到

>>> elem("pine",2013,"1357",True)
"['1357', 'pine', 2013, True]"

我想要的输出是'[1357,pine,2013,True]'

对不起,如果我没有提供足够的。这就是我现在所拥有的一切.. 很抱歉没有为帖子做好格式化..

4

4 回答 4

1

只需从您拥有的数据结构中创建所需的字符串:

>>> '[{},{},{},{}]'.format('c','a',2,True) 
'[c,a,2,True]'
>>> '[{},{},{},{}]'.format(*['c','a',2,True])
'[c,a,2,True]'
>>> '[{},{},{},{}]'.format(*['1357', 'pine', 2013, True])
'[1357,pine,2013,True]'

或者将数据结构的字符串表示编辑为您想要的:

>>> str(['c', 'a', 2, True])
"['c', 'a', 2, True]"
>>> str(['c', 'a', 2, True]).replace("'","").replace(' ','')
'[c,a,2,True]'

'在任何一种情况下,当您打印字符串时,最终的外部都会消失:

>>> print('[{},{},{},{}]'.format(*['c','a',2,True]))
[c,a,2,True]
>>> print(str(['c', 'a', 2, True]).replace("'","").replace(' ',''))
[c,a,2,True]
>>> li=['1357', 'pine', 2013, True]
>>> print('[{},{},{},{}]'.format(*li))
[1357,pine,2013,True]
于 2013-09-14T22:50:22.067 回答
0

你有的原因" "是因为它是一个字符串。您返回了列表的字符串表示形式,而实际上您应该只返回列表:

return result

使用您拥有的字符串,您可以安全地将其转换回列表ast.literal_eval

import ast
...
myresult = function(a, b, c, d)
print ast.literal_eval(myresult)
于 2013-09-14T22:27:56.820 回答
0
return "[" + ",".join(result) + "]"
于 2013-09-14T22:28:03.913 回答
0

当您调用str(result)它时,它会给出对象的字符串表示形式result。该字符串的实际外观取决于对象所属类的实现(它调用__str__类中的特殊方法进行转换)。

由于对象 ( result) 属于类list,因此您将获得 a 的标准字符串表示形式list。您不能(明智地)更改list类,因此您需要创建不同的表示。

在您的示例代码中,我很困惑您为什么要进行转换。当您需要字符串表示时,为什么要转换year为?int为什么设置passedTrue当它是一个参数?反正:

def elem(tree, year, ident, passed): 
    passed = True 
    result = "[%s,%s,%d,%s]" % (ident, tree, year, passed)  
    return result

print(elem("pine", 2013, "1357", True))

给出:

[1357,pine,2013,True]
于 2013-09-14T22:49:24.867 回答