1

好的,我需要创建一个定义为 rootString 的字符串,如下所示:

F:0.0

字母 F 源自先前的字符串,通过以下方式获得:

root = str(newickString[-1])

并且 float 0.0 可以是这样的:

rootD = 0.0

我的问题是,如何将变量名和浮点值与冒号结合起来?

4

6 回答 6

3
>>> string = 'WWF'
>>> num = 0.0
>>> print ("{0}:{1}".format(string[-1],num))
F:0.0

在较旧版本的 Python (<2.6) 上,您需要执行以下操作:

"%s:%s" % (string[-1], num)

代替

"{0}:{1}".format(string[-1],num)
于 2012-06-28T20:28:08.820 回答
1

您可以只使用+符号并将它们连接在一起:

>>> old_string = 'oldF'
>>> float_val = 0.0
>>> rootString = old_string[-1] + ':' + str(float_val)
>>> print rootString
F:0.0
于 2012-06-28T20:26:44.307 回答
1

Python 中的字符串插值非常简单。对于大多数版本的 Python,您可以编写:

template = "%s:%f"
root = "F"
rootD = 0.0
result = template % (root, rootD)
# and result is "F:0.0"

看看http://docs.python.org/library/stdtypes.html#string-formatting

(请注意,如果您使用的是足够新的 Python 版本,您可能更喜欢.format在字符串上使用更新的方法——请参阅http://docs.python.org/library/string.html#new-string-formatting

于 2012-06-28T20:29:07.427 回答
0

这是一种组合两个值并将它们打印出来的方法。

string_value = 'BOF'
float_value = 0.0
print "%s:%s" % (string_value[-1], float_value)
>>F:0.0
于 2012-06-28T20:25:26.510 回答
0

试试这个:

'%s:%0.1f' % (root, rootD)

在此处阅读有关字符串格式的更多信息。

于 2012-06-28T20:26:48.987 回答
0

如果您想要一个变量将其存储为字符串(或建议的其他几种方法):

rootString = "%s:%s" % (root,rootD)

如果您打算稍后使用/更改该值,最好设置一个像此示例代码中的类(另外,您仍然可以轻松打印字符串):

class rootString:
    def __init__(self,root,rootD):
    self.root = root
    self.rootD = rootD

    def getRoot(self):
    return self.root

    def getRootD(self):
    return self.rootD

    def setRoot(self, root):
        self.root = root

    def setRootD(self, rootD):
        self.rootD = rootD

    def __str__(self):
    return "%s:%s" % (self.root,self.rootD)

if __name__=='__main__': 
    myRootStr = rootString("F",0.0)
    print myRootStr #gives string output you want                                                                                                                                                                                                                             
    print myRootStr.getRootD() #but you can still get the float easily                                                                                                                                                                                                        
    myRootStr.setRootD(3.14) #or change it if you need to                                                                                                                                                                                                                     
    print myRootStr
于 2012-06-28T20:41:50.200 回答