如何通过格式功能使用列表

时间:2019-07-12 17:53:15

标签: python arrays regex python-3.x string

提供了有关商店库存数据的列表,其中列表中的每个项目都代表项目的名称,库存量以及成本。使用.format方法(不是字符串连接)以相同的格式打印出列表中的每个项目。例如,第一个打印语句应显示为“商店有12双鞋,每双售价29.99美元。”

下面是我要使用的代码。

inventory = ["shoes, 12, 29.99", "shirts, 20, 9.99", "sweatpants, 25, 
15.00", "scarves, 13, 7.75"]

for person in inventory:
    item = person[0]
    quantity = person[1]
    amount = person[2]
    print("The store has {} {}, each for {} USD.".format(item, quantity, 
    amount))

我不知道为什么它只抓住单词的第一个字母。以下是我的输出。 输出:

The store has s h, each for o USD.
The store has s h, each for i USD.
The store has s w, each for e USD.
The store has s c, each for a USD.

5 个答案:

答案 0 :(得分:3)

您的格式化功能没有错;您解析商品,数量和数量的方式是错误的。如果仔细观察,inventorystring的列表,而不是列表列表。这就是为什么在打印item时,它仅打印出"s"的原因,因为那是字符串中的第一个字符。

尝试一下:

inventory = [["shoes", "12", "29.99"], ["shirts", "20", "9.99"], ["sweatpants", "25", "15.00"], ["scarves", "13", "7.75"]]

for person in inventory:
    item = person[0]
    quantity = person[1]
    amount = person[2]
    print("The store has {} {}, each for {} USD.".format(item, quantity, 
    amount))

答案 1 :(得分:1)

这是因为,您要指向特定的字符,即person[0]person字符串的第一个字符。您必须先分割人员,然后格式化字符串,以下操作无需更改inventory变量即可完成:

for person in inventory:
    person_data = person.split(" ")
    item = person_data[0]
    quantity = person_data[1]
    amount = person_data[2]
    print("The store has {} {}, each for {} USD.".format(item, quantity, 
    amount))

答案 2 :(得分:1)

变量person将成为列表中字符串中的每个元素。

person[0]将返回person的第一个字符

person[1]将返回person的第二个字符

您要做的是用逗号分隔字符串。

您可以在字符串上使用.split()方法

item, quantity, amount = person.split(",")

答案 3 :(得分:1)

其他人的答案都可以很好地工作,但是我建议分割“,”,特别是对于OP给出的示例。与仅在“,”或“”上分开相比,它将避免出现多余的空格或逗号。

item, quantity, amount = person.split(", ")

person_data = person.split(", ")
item = person_data[0]
quantity = person_data[1]
amount = person_data[2]```

答案 4 :(得分:1)

尝试一下

microsoft.aspnetcore:*

只需拆分列表中的每个项目,

当您拆分inventory = ["shoes, 12, 29.99", "shirts, 20, 9.99", "sweatpants, 25, 15.00", "scarves, 13, 7.75"] for person in inventory: person = person.split(',') item = person[0] quantity = person[1] amount = person[2] print("The store has {} {}, each for {} USD.".format(item, quantity, amount)) # output # The store has shoes 12, each for 29.99 USD. # The store has shirts 20, each for 9.99 USD. # The store has sweatpants 25, each for 15.00 USD. # The store has scarves 13, each for 7.75 USD. 时,您会得到"shoes, 12, 29.99", "shirts, 20, 9.99".split(',')这样的列表。因此,无需更改代码,只需在for循环后添加["shoes, "12", "29.99"]行。循环时,每次获取一个字符串。这就是每次循环时都会发生的情况。

person = person.split(',')

我所做的只是拆分字符串,然后您可以根据需要轻松地访问它。

>>> 1st_str = "shoes, 12, 29.99"
>>> 1st_str[0]
's'
>>> 1st_str[1]
'h'
>>> 1st_str[2]
'o'