亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號