【问题标题】:Splitting a string in a list to find and replace elements in python拆分列表中的字符串以查找和替换python中的元素
【发布时间】:2019-07-04 05:05:28
【问题描述】:

我有一个货币对列表,比如说它看起来像这样:

cp = ['EURUSD', 'CHFUSD', 'JPYUSD', 'CADUSD']

我要做的是遍历此列表,将 USD 更改为 GBP 以生成一个新列表,该列表将显示:

new_cp = ['EURGBP', 'CHFGBP', 'JPYGBP', 'CADGBP']

我认为我会这样做的方式是循环遍历每一对,将字符串拆分为一个列表,删除最后 3 个元素,然后附加 'G'、'B'、'P' 作为新的最后一个3 个元素,最后将其返回到一个字符串中,并将其添加到新列表 'new_cp' 中。

我开始的代码是:

for pair in cp:
   split_pair = pair.split()

然而,这一切的结果是:

['EURUSD']
['CHFUSD']

等等

所以它只是拆分列表,而不是拆分列表中每个货币对的字符串。

我知道这是相对初学者的东西,但我真的很难过。我只是不明白为什么这不起作用。

如果你能帮助我解决我在那里做错的事情,或者甚至提出一种更有效的方法来实现我想要做的事情,我将不胜感激。

【问题讨论】:

  • .split 怎么知道你的意思是分成两组三个字符?默认情况下,它在任何 空白 上分割,其中没有。
  • .split() 没有参数,在空白处分割,它不会神奇地识别你想要在 3 个字符后在'USD'/ 的边界 - 考虑改为切片字符串或使用 .replace()跨度>
  • 您的数据结构看起来也不是最理想的,元组列表或字典似乎更自然,例如[('EUR', 'USD'), ('CHF', 'USD')]

标签: python list replace split


【解决方案1】:

我建议使用.replace() 方法

例如:

cp = ['EURUSD', 'CHFUSD', 'JPYUSD', 'CADUSD']
new_cp = []

for currency in cp:
    new_cp.append(currency.replace('USD', 'GBP'))

print(new_cp)

>> ['EURGBP', 'CHFGBP', 'JPYGBP', 'CADGBP']

希望这会有所帮助:)

【讨论】:

  • 一个班轮:[(currency.replace('USD', 'GBP') 用于 ['EURUSD', 'CHFUSD', 'JPYUSD', 'CADUSD']]]
【解决方案2】:

您可以通过在列表理解中使用 replace 来实现:

cp = ['EURUSD', 'CHFUSD', 'JPYUSD', 'CADUSD']
new_cp = [word.replace('USD', 'GBP') for word in cp] 
#i.e.: for word in cp, we apply the specified function to it - replace the 'USD' in that word with 'GBP' - and then append it to a new list
print(new_cp)

输出:['EURGBP', 'CHFGBP', 'JPYGBP', 'CADGBP']

【讨论】:

    【解决方案3】:

    如果您知道每个货币对将包含USD 作为最后三个字符,更有效的方法是只使用列表索引并附加GBP

    new_cp = [i[:-3] + 'GBP' for i in cp]
    

    【讨论】:

      【解决方案4】:

      这是另一种解决方案。 您可以使用 RegEx 替换货币值。

      import re
      
      cp = ['EURUSD', 'CHFUSD', 'JPYUSD', 'CADUSD']
      
      mycurr = 'GBP'
      
      to_curr = re.compile("USD")
      
      for pair in cp:
          print(to_curr.sub(mycurr, pair))
      
      

      输出:

      EURGBP
      CHFGBP
      JPYGBP
      CADGBP
      

      【讨论】:

        猜你喜欢
        • 2021-12-19
        • 2011-02-04
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 2019-02-20
        • 2022-10-19
        • 2016-09-08
        • 1970-01-01
        相关资源
        最近更新 更多