如何在python中扩展字符串中的字符串?

时间:2015-06-12 23:36:30

标签: python string dictionary concatenation list-comprehension

我有一个看起来像这样的字符串:

1 | xxx | xxx | xxx | yyy*a*b*c | xxx

我想扩展yyy*a*b*c部分,以便字符串看起来像这样:

1 | xxx | xxx | xxx | yyya | yyyb | yyyc | xxx

我实际上有一个大文件,在这些字符串之间有分隔符。 我已将文件解析为一个如下所示的字典:

{'1': ['xxx' , 'xxx', 'xxx', 'yyy*a*b*c', 'xxx' ], '2': ['xxx*d*e*f', ...,  'zzz'], etc}

我需要将yyy*a*b*cxxx*d*e*f部分替换为列表中的其他项目。

我如何在python 3中执行此操作?在将其解析为字典或将其解析为字典(以及如何)之后,我是否应该扩展字符串中的所有内容?

3 个答案:

答案 0 :(得分:1)

您可以使用拆分和简单列表理解来完成此操作:

{{1}}

答案 1 :(得分:1)

你应该在解析文件中的数据时这样做,只需在添加到列表时通过这个函数传递每个参数,添加到@tuananh答案: -

<amqp:connector name="amqpConnector"
    host="${myApp.status_reporting.host}"
    port="${myApp.status_reporting.port}"
    username="${myApp.status_reporting.username}"
    password="${myApp.status_reporting.password}"
    requestedHeartbeat="${myApp.status_reporting.requestedHeartbeat}"
    doc:name="AMQP Connector for Status Messages"/>


<flow name="cwm_send" doc:name="cwm_send">
    <amqp:outbound-endpoint 
        exchangeName="${myApp.status_reporting.exchange_name}"
        exchangeType="topic"
        exchangeDurable="${myApp.status_reporting.exchange_is_durable}"
        routingKey="${myApp.status_reporting.routing_key}"
        connector-ref="amqpConnector" 
        doc:name="AMQP Out" 
        queueDurable="true" 
        responseTimeout="10000"
    />
</flow>

答案 2 :(得分:0)

process将列入如下列表:

['xxx', 'xxx', 'yyy*a*b*c', 'xxx*d*e*f']

并使用扩展的正确术语返回完整列表:

def expand(s):
    """
    expand('yyy*a*b*c') --> ['yyya', 'yyyb', 'yyyc']
    expand('xxx') --> ['xxx']
    """

    if "*" not in s:
        return s
    base, suffixes = s.split("*")
    return [base + suffix for suffix in suffixes]

def process(strings):
    result = []
    for s in strings:
        result.extend(s)
    return result