我有问题。 我想为变量分配路径,所以我这样做了:
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
我在做什么错了,我该如何解决?
答案 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
对象。