Python:从字符串中删除字符,然后将其返回

时间:2018-08-13 23:26:01

标签: python string list

例如,给定一个字符串列表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

4 个答案:

答案 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