python替换字符而不替换已替换的字符

时间:2016-01-31 10:28:22

标签: python string replace

我尝试根据字典mystr = 'AC'替换d = {'A':'C', 'C':'B'}中的字符。但是, 我不会立即替换所有内容。 我会逐个按键顺序替换字符(每次替换后我会进行一些计算)。更重要的是, 我无法替换已经替换的字符。

例如:在第一步,我将'A'替换为'C',然后我获得了'CC'。我使用'CC'做一些计算,然后进入下一步。在下一步中,我将'C'替换为'B'。虽然我在'C'中有两个'CC',但第一个'C'已被替换。因此,我只替换一个,然后我得到了'CB'

2 个答案:

答案 0 :(得分:1)

我的方法是保留mystr = 'AC' mylist = list(mystr) flag = len(mystr) * [False] d = {'A':'C', 'C':'B'} for key in d.keys(): for ind, char in enumerate(mylist): if flag[ind] == False and key == char: mylist[ind] = d[key] flag[ind] = True #do some calculation mystr = "".join(mylist) print mystr 列表以检测角色是否已经更改。因为字符串是不可变的,所以我已经把它作为一个列表来简化我的任务。

我认为这会对你有所帮助:

    <% @locations.each do |loc| %>
        <%= params.has_key?(:location)  %>
        <%= params.has_key?(:location) && params[:location].has_key?(:location_ids) ? params[:location][:location_ids].to_s : "empty" %>
        <%= params.has_key?(:location) && params[:location].has_key?(:location_ids) && params[:location][:location_ids].include?(loc.id) %>
        <%= check_box_tag("location[location_ids][]" , loc.id, params.has_key?(:location) && params[:location].has_key?(:location_ids) && params[:location][:location_ids].include?(loc.id.to_s) ? loc.id : nil, id: "location_" + loc.id.to_s) %>
        <%= label_tag("location_"  + loc.id.to_s, loc.name) %>
    <% end  %>

答案 1 :(得分:0)

也许你需要使用list来保存结果?或者你可以在更换后计算。并使用max position in replace

background-size: contain;