3 回答
TA贡献1827条经验 获得超9个赞
由于prices
参数中的每个字符串都具有形式'[country_code]$[number]'
,因此您可以将每个字符串拆分'$'
为第一部分。
以下是如何执行此操作的示例:
def get_country_codes(prices): return [p.split('$')[0] for p in prices]
因此get_country_codes(['US$200', 'CA$80', 'GA$500'])
返回['US', 'CA', 'GA']
。
另外请注意,我建议不要命名变量,list
因为它会覆盖list
类型list
本身的内置值。
TA贡献1719条经验 获得超6个赞
您的代码有多个问题,您必须修复所有问题才能使其正常工作:
def get_country_codes(prices):
prices = ""
无论您的来电者传递了什么价值,您都将其抛弃并替换为""。您不想这样做,因此只需删除最后一行即可。
list = prices.split()
您真的不应该调用此列表list。另外,split由于没有在空格上分割参数,因此您得到的可能不是您想要的:
>>> "US$200, CA$80, GA$500".split()
['US$200,', 'CA$80,', 'GA$500']
我想您可以摆脱那些逗号,因为您只是将它们扔掉了。但最好使用实际的分隔符进行拆分', '。因此,让我们更改该行:
prices = prices.split(", ")
list.remove("$")
这将删除列表中所有与string相等的值"$"。没有这样的值,所以它什么也不做。
更一般而言,您不想丢弃列表中的任何字符串。相反,您想用在处被截断的字符串替换字符串$。因此,您需要一个循环:
countries = []
for price in prices:
country, dollar, price = price.partition('$')
countries.append(country)
如果您熟悉列表推导,可以将其重写为单行代码:
countries = [price.partition('$')[0] for price in prices]
"".join(list)
这只会创建一个新字符串,然后将其丢弃。如果要使用它,则必须将其分配给某些对象,如下所示:
result = "".join(countries)
但是……您真的要在join这里做什么吗?听起来您希望结果是一个字符串列表['US', 'CA', 'GA'],而不是一个大字符串'USCAGA',对吧?因此,请摆脱这条线。
return list
只需将变量名更改为countries,就可以完成。
TA贡献1813条经验 获得超2个赞
由于数据的结构是前两个字符是县区代码,因此可以使用简单的字符串切片。
def get_country_codes(prices): return [p[:2] for p in prices]
添加回答
举报