为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

函数式编程 2021-05-13 18:41:29
例如,给定一个字符串列表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
查看完整描述

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本身的内置值。


查看完整回答
反对 回复 2021-05-25
?
慕侠2389804

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,就可以完成。


查看完整回答
反对 回复 2021-05-25
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

由于数据的结构是前两个字符是县区代码,因此可以使用简单的字符串切片。

def get_country_codes(prices):
    return [p[:2] for p in prices]


查看完整回答
反对 回复 2021-05-25
  • 3 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信