Python-字符串内的格式变量

时间:2018-10-30 21:09:58

标签: python

我有问题。 我想为变量分配路径,所以我这样做了:

customers = ["john", "steve", "robbert", "benjamin"]
for customer in customers:
    dataset = "/var/www/test.nl/customer_data/" + str({customer}) + ".csv"

所以我希望该变量的输出为:

/var/www/test.nl/customer_data/john.csv

但是事实并非如此,因为我得到的输出是:

/var/www/test.nl/customer_data/set(['john']).csv

我在做什么错了,我该如何解决?

2 个答案:

答案 0 :(得分:2)

在这里,您首先制作一个包含该字符串的单例 set 。结果,它的格式错误。使用:

str({customer})

因此,您首先构造一个集合,例如:

>>> {"john"}
{'john'}
>>> type({"john"})
<class 'set'>

然后如果您采用该集合的str(..),我们将得到:

>>> str({"john"})
"{'john'}"

那么这就是我们将“填写”的值,而我们只需要字符串customer本身的内容。

您可以使用以下格式设置它们:

customers = ["john", "steve", "robbert", "benjamin"]
for customer in customers:
    dataset = "/var/www/test.nl/customer_data/{}.csv".format(customer)

因此,这里的{}将被替换为customer的字符串表示形式,但是由于customer已经是一个字符串,因此将仅填充该字符串。

答案 1 :(得分:2)

变量customer周围有花括号。替换

dataset = "/var/www/test.nl/customer_data/" + str({customer}) + ".csv"

dataset = "/var/www/test.nl/customer_data/" + str(customer) + ".csv"

更好的是,如果在python 3.6或更高版本上,请使用f字符串:

dataset = f"/var/www/test.nl/customer_data/{customer}.csv"

这可能是您看到用于字符串格式化的花括号的地方。使用它们的方式是内联定义set对象。