如何用字符串替换单词列表并保持格式在python中?

时间:2015-12-04 23:44:47

标签: python string list

我有一个包含文件行的列表。

list1[0]="this is the first line"
list2[1]="this is the second line"

我也有一个字符串。

example="TTTTTTTaaaaaaaaaabcccddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffff"

我想用字符串(示例)替换list [0]。但是我想保持单词长度。例如,新list1 [0]应为"TTTT TT TTa aaaaa aaaa"。我能想到的唯一解决方案是将字符串示例转换为列表并使用for循环从字符串列表中逐字逐句读取到原始列表中。

for line in open(input, 'r'):
        list1[i] = listString[i]
        i=i+1

但是,根据我的理解,这不起作用,因为Python字符串是不可变的?对于初学者来说,解决这个问题的好方法是什么?

1 个答案:

答案 0 :(得分:4)

我可能会做类似的事情:

function outputHtml() {
     ?>
     This is test html <a href="http://google.com">google</a>
     <?php
}

if ( !empty($_POST) )
{
      outputHtml();
}

如果orig = "this is the first line" repl = "TTTTTTTaaaaaaaaaabcccddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffff" def replace(orig, repl): r = iter(repl) result = ''.join([' ' if ch.isspace() else next(r) for ch in orig]) return result 可能比repl短,请考虑orig

这可以通过从替换字符串中创建迭代器,然后迭代原始字符串,保留空格,但使用替换字符串中的下一个字符而不是任何非空格字符。

您可以采用的另一种方法是在一次通过r = itertools.cycle(repl)时注意空格的索引,然后在orig的传递中将它们插入到那些索引处并返回结果的一部分

repl

然而,我无法想象第二种方法会更快,肯定会降低内存效率,而且我发现阅读起来并不容易(事实上我觉得它更难阅读!)它也没有如果def replace(orig, repl): spaces = [idx for idx,ch in enumerate(orig) if ch.isspace()] repl = list(repl) for idx in spaces: repl.insert(idx, " ") # add a space before that index return ''.join(repl[:len(orig)]) 短于repl,我会有一个简单的解决方法(我猜你可以做orig但是这比罪恶更难,但仍然不保证它会起作用)