在列表中拆分字符串以查找和替换python中的元素

时间:2019-02-10 15:45:01

标签: python list replace split

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

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 :(得分:5)

我建议使用implementation 'com.google.firebase:firebase-core:16.0.7' 方法

例如:

  $.ajax({
    data: {impressions: impressions}
    dataType: 'json',
    type: 'POST',
    url: "/pages/home"
  });

希望这会有所帮助:)

答案 1 :(得分:4)

您可以通过在列表理解中使用extern crate actix; extern crate actix_web; extern crate env_logger; use actix_web::http::Method; use actix_web::{middleware, server, App, HttpRequest, HttpResponse}; enum DataSource { Postgres, HDF5, } fn index_postgres(req: &HttpRequest) -> HttpResponse { HttpResponse::Ok().body("not implemented") } fn index_hdf5(req: &HttpRequest) -> HttpResponse { HttpResponse::Ok().body("not implemented") } fn main() { let mut verbose = false; verbose = true; let mut data_source = DataSource::Postgres; data_source = DataSource::HDF5; let index = match data_source { DataSource::Postgres => index_postgres, DataSource::HDF5 => index_hdf5, }; ::std::env::set_var("RUST_LOG", "actix_web=info"); env_logger::init(); let sys = actix::System::new("test"); server::new(move || { if verbose { App::new() .middleware(middleware::Logger::default()) .resource("/", |r| r.method(Method::GET).f(index)) } else { App::new().resource("/", |r| r.method(Method::GET).f(index)) } }) .bind("127.0.0.1:8080") .unwrap() .start(); println!("Started http server: 127.0.0.1:8080"); let _ = sys.run(); } 来实现:

error: unsatisfied lifetime constraints
  --> src\main.rs:50:13
   |
48 |       server::new(move || {
   |                   ------- lifetime `'1` represents this closure's body
49 |           if verbose {
50 | /             App::new()
51 | |                 .middleware(middleware::Logger::default())
52 | |                 .resource("/", |r| r.method(Method::GET).f(index))
   | |__________________________________________________________________^ argument requires that `'1` must outlive `'static`
   |
   = note: closure implements `Fn`, so references to captured variables can't escape the closure

输出:replace

答案 2 :(得分:3)

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

GBP

答案 3 :(得分:2)

这是另一种解决方案。 您可以使用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