将由浮点数和文本组成的元组转换为单个字符串

时间:2017-07-06 11:04:12

标签: python file text

我试图将由2个浮点数和3个部分文本组成的元组转换为一个字符串,以便我可以在file.write()中使用它,因为它不接受元组。

testr = 'you went' ,speed ,'mph and stopped in' ,stop ,'meters'
test = open('testresults.txt' ,'w')
test.write(testr)
test.close()

每当我尝试运行该程序时,它都会给我这个

    test.write(testr)
TypeError: must be str, not tuple

4 个答案:

答案 0 :(得分:2)

使用format

testr = 'you went {} mph and stopped in {} meters'.format(speed, stop)

答案 1 :(得分:1)

与其他答案不同,这将采用您提出的元组:

testr = 'you went' ,speed ,'mph and stopped in' ,stop ,'meters'
test = open('testresults.txt' ,'w')
test.write(" ".join(str(i)for i in testr))
test.close()

由于只有第三行与您的代码不同,所以解释如下:

首先str(i)for i in testr

内联for - 循环在python中称为list comprhension。它只是迭代你的testr元组,逐个返回值。 str(i)是一个类型转换,它会尝试将i转换为字符串。这是必要的,因为在您的元组中,某些条目为String - 类型,而某些变量是某种类型的数字,可能是FloatInteger。有关详细信息,请参阅str()float()int()

然后" ".join(...)

这是字符串类型的函数,它接受字符串的列表或元组,并且,如名称sugest,将它连接在一起,由它所作用的子字符串分隔,点的前面部分(" " )。这对我来说总觉得有点奇怪,或者从里到外,但它仍然是一个非常有用的功能!

我希望这有帮助!

答案 2 :(得分:0)

将其转换为String

test.write(str(testr))

答案 3 :(得分:0)

值得庆幸的是,python 3.6使我们非常容易阅读:

testr = f'you went {speed} mph and stopped in {stop} metres'
test = open('testresults.txt' ,'w')
test.write(testr)
test.close()

否则,使用另一个答案中提到的string.format(*args)可以实现同样的目的。