例如,给定一个字符串列表prices = ["US$200", "CA$80", "GA$500"]
,
我试图只返回["US", "CA", "GA"]
。
这是我的代码-我在做什么错了?
def get_country_codes(prices):
prices = ""
list = prices.split()
list.remove("$")
"".join(list)
return list
答案 0 :(得分:2)
由于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
本身。
答案 1 :(得分:1)
您的代码存在多个问题,您必须修复所有问题才能使其正常工作:
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("$")
这将删除列表中等于字符串"$"
的每个值。没有这样的值,所以它什么也不做。
更一般而言,您不想丢弃列表中的任何字符串。相反,您想用在$
处被截断的字符串替换字符串。因此,您需要一个循环:
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
即可。
答案 2 :(得分:0)
由于数据的结构是前两个字符是县区代码,因此可以使用简单的字符串切片。
def get_country_codes(prices):
return [p[:2] for p in prices]
答案 3 :(得分:-1)
您调用发送价格参数的函数,但第一行初始化为空字符串:
价格=''
我还建议使用'$'字符作为拆分字符,例如:
列表= prices.split('$')
尝试这样的事情:
NULL