Python:分裂和连接这些字符串的最快方法是什么?

2024-06-02 07:04:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,其中一个全局常量ZETA由用户输入

ZETA=α。*

用户将提供如下输入:

alpha.aaa_xxx
alpha.bbb_yyy
alpha.abc_xyz
etc...

alpha.*参数代表整数,而且整数太多,因此构建一个类函数将输出分配给每个已知的整数值会很麻烦。你知道吗

稍后在我的代码中,根据给ZETA的输入,我需要如下输出:

beta.aaa, beta.xxx
beta.bbb, beta.yyy
beta.abc, beta.xyz

我想使用list、split和join方法来获取这些输出,但遇到了一个错误:

当我试图列出(泽塔)时,我希望:

a, l, p, h, a, ., a, a, a, _, x, x, x

我得到:

TypeError: 'int' object is not iterable

我明白为什么。。。但我的计划肯定有问题。思想?你知道吗

谢谢!你知道吗

预计到达时间:

所以我想如果我要求输入用引号括起来的话,我可以到达我需要的地方:

'阿尔法aaa\U xxx'

而不是

你知道吗阿尔法aaa\U xxx你知道吗

有什么办法吗?你知道吗


Tags: 用户alpha脚本etc整数全局betaxxx
2条回答

好吧,假设你的数据在一个列表中。你知道吗

sample = ['alpha.111_222', 'alpha.222_444', 'alpha.433_cvx'] # for example

您可以将文件读入列表,但是,生成器的优点是,您不必这样做,您可以轻松地为读取文件构建一个生成器。你知道吗

据我所知,你想先剪下阿尔法部分。 我们可以用发电机来做

[y.split('.') for y in sample] # list of [['alpha', 'xxx_yyy'], ...]

现在我们要得到每个列表的第二个成员,并用“\ux”将其拆分。发电机也是这样。你知道吗

[x.split('_') for x in [y.split('.')[1] for y in sample]]

现在,当我们有对的列表['xxx','yyy']时,我们所需要的就是形成这样的新行

result = ["beta.%s, beta.%s" % (x[0],x[1]) for x in [x.split('_') for x in [y.split('.')[1] for y in sample]]] # ['beta.xxx, beta.yyy', ...]

或者,如果您不喜欢嵌套生成器,可以编写如下代码:

k = [x.split('.')[1] for x in sample]
l = [x.split('_') for x in k]
result = ["beta.%s, beta.%s" % (x[0],x[1]) for x in l]

不过看起来更清楚,变量更多。现在,我们只需要打印。或输出到文件。你知道吗

for item in result:
    print item

希望对你有帮助。你知道吗

谢谢你们的帮助!你知道吗

我想我应该分享我在沙盒环境中实现的最终解决方案。所有这些都允许在货币交易脚本中更改多行代码,只需对用户输入进行一次更改。我能够访问大量关于新货币对的数据,而不必在数百行代码中更改对新货币对、投资组合余额、起始余额、日志输出等的所有引用。你知道吗

PAIR        = 'btc_usd'  # requires format 'xxx_yyy'

def instruments(pair):

    currency_code   = PAIR.split('_')[1]
    asset_code      = PAIR.split('_')[0]  
    instrument_pair = asset_code + '_' + currency_code
    instrument      = pairs[instrument_pair]
    currency        = portfolio[currencies[currency_code]]
    assets          = portfolio[currencies[asset_code]]
    currency_CODE   = (currency_code).upper()
    asset_CODE      = (asset_code).upper()
    if info.tick == 0:
        storage.initial_currency = currency
        storage.initial_assets = assets

    return (instrument_pair, instrument, currency_CODE, currency_code, currency, 
        storage.initial_currency, asset_CODE, asset_code, assets, storage.initial_assets)

def tick():

    (instrument_pair, instrument, currency_CODE, currency_code, currency, storage.initial_currency, 
        asset_CODE, asset_code, assets, storage.initial_assets) = instruments(PAIR)

    if info.tick == 0:
        buy(instrument, 1)
    if info.tick == 1:
        log('******************************')        
        log('User Input......: %s' % PAIR)
        log('instrument pair.: %s' % instrument_pair)
        log('instrument......: %s' % instrument)
        log('CURRENCY CODE...: %s' % currency_CODE)        
        log('currency code...: %s' % currency_code)
        log('currency........: %.2f' % currency)
        log('initial currency: %.2f' % storage.initial_currency)
        log('ASSET CODE......: %s' % asset_CODE)          
        log('asset code......: %s' % asset_code) 
        log('assets..........: %.2f' % assets)
        log('initial assets..: %.2f' % storage.initial_assets)
        log('******************************')

在我们的沙盒中产生:

[2014-06-09 02:00:00]  BUY: 1.00 BTC (at 648.00 USD)
[2014-06-09 02:15:00] ******************************
[2014-06-09 02:15:00] User Input......: btc_usd
[2014-06-09 02:15:00] instrument pair.: btc_usd
[2014-06-09 02:15:00] instrument......: 2000
[2014-06-09 02:15:00] CURRENCY CODE...: USD
[2014-06-09 02:15:00] currency code...: usd
[2014-06-09 02:15:00] currency........: 352.00
[2014-06-09 02:15:00] initial currency: 1000.00
[2014-06-09 02:15:00] ASSET CODE......: BTC
[2014-06-09 02:15:00] asset code......: btc
[2014-06-09 02:15:00] assets..........: 1.00
[2014-06-09 02:15:00] initial assets..: 0.00
[2014-06-09 02:15:00] ******************************

我还得出了另一个解决方案:

PAIR        = 'Btc#@#$^@% _uSd'  # will also work with input 'BTCUSD'

def instruments(pair):

    p = filter(str.isalpha, pair).lower()
    currency_code   = ''.join(list((p)[3:6]))
    asset_code      = ''.join(list((p)[0:3]))      
    instrument_pair = asset_code + '_' + currency_code
    instrument      = pairs[instrument_pair]
    currency        = portfolio[currencies[currency_code]]
    assets          = portfolio[currencies[asset_code]]
    currency_CODE   = (currency_code).upper()
    asset_CODE      = (asset_code).upper()
    if info.tick == 0:
        storage.initial_currency = currency
        storage.initial_assets = assets

    return (instrument_pair, instrument, currency_CODE, currency_code, currency, 
        storage.initial_currency, asset_CODE, asset_code, assets, storage.initial_assets)

def tick():

    (instrument_pair, instrument, currency_CODE, currency_code, currency, storage.initial_currency, 
        asset_CODE, asset_code, assets, storage.initial_assets) = instruments(PAIR)

    if info.tick == 0:
        buy(instrument, 1)
    if info.tick == 1:
        log('******************************')        
        log('User Input......: %s' % PAIR)
        log('instrument pair.: %s' % instrument_pair)
        log('instrument......: %s' % instrument)
        log('CURRENCY CODE...: %s' % currency_CODE)        
        log('currency code...: %s' % currency_code)
        log('currency........: %.2f' % currency)
        log('initial currency: %.2f' % storage.initial_currency)
        log('ASSET CODE......: %s' % asset_CODE)          
        log('asset code......: %s' % asset_code) 
        log('assets..........: %.2f' % assets)
        log('initial assets..: %.2f' % storage.initial_assets)
        log('******************************')

这意味着:

[2014-06-09 02:00:00]  BUY: 1.00 BTC (at 648.00 USD)
[2014-06-09 02:15:00] ******************************
[2014-06-09 02:15:00] User Input......: Btc#@#$^@% _uSd
[2014-06-09 02:15:00] instrument pair.: btc_usd
[2014-06-09 02:15:00] instrument......: 2000
[2014-06-09 02:15:00] CURRENCY CODE...: USD
[2014-06-09 02:15:00] currency code...: usd
[2014-06-09 02:15:00] currency........: 352.00
[2014-06-09 02:15:00] initial currency: 1000.00
[2014-06-09 02:15:00] ASSET CODE......: BTC
[2014-06-09 02:15:00] asset code......: btc
[2014-06-09 02:15:00] assets..........: 1.00
[2014-06-09 02:15:00] initial assets..: 0.00
[2014-06-09 02:15:00] ******************************

相关问题 更多 >