如何从2个值形成一个字符串

时间:2012-06-28 20:22:30

标签: python string variables floating-point

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

F:0.0

字母F来自前一个字符串,由以下字符获得:

root = str(newickString[-1])

浮点数0.0可以是这样的:

rootD = 0.0

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

6 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

>>> old_string = 'oldF'
>>> float_val = 0.0
>>> rootString = old_string[-1] + ':' + str(float_val)
>>> print rootString
F:0.0

答案 2 :(得分: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

答案 3 :(得分:0)

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

string_value = 'BOF'
float_value = 0.0
print "%s:%s" % (string_value[-1], float_value)
>>F:0.0

答案 4 :(得分:0)

试试这个:

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

Read more about string formatting here.

答案 5 :(得分: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