Разделение строки в списке для поиска и замены элементов в Python - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть список валютных пар, скажем, например, он выглядит следующим образом:

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']

и т. Д.

Таким образом, это просто разделение списка, а не разделение строки для каждой валютыпара в списке.

Я знаю, что это относительно новичок, но я действительно в замешательстве.Я просто не понимаю, почему это не работает.

Если вы можете помочь с тем, что я делаю неправильно, или даже предложить более эффективный способ добиться того, что я хочу сделать, это было быочень ценится.

Ответы [ 4 ]

0 голосов
/ 10 февраля 2019

Вот еще одно решение.Вы можете использовать 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
0 голосов
/ 10 февраля 2019

Я бы предложил использовать метод .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']

Надеюсь, это поможет:)

0 голосов
/ 10 февраля 2019

Если вы знаете, что каждая валютная пара будет содержать USD в качестве последних трех символов, более эффективный способ состоит в том, чтобы просто использовать индексацию списка и добавить GBP:

new_cp = [i[:-3] + 'GBP' for i in cp]
0 голосов
/ 10 февраля 2019

Этого можно достичь, используя 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']

...