代码之家  ›  专栏  ›  技术社区  ›  Jai Sharma

仅替换字符串的结尾

  •  2
  • Jai Sharma  · 技术社区  · 6 年前

    我一句话也做不到,这让我很恼火。我觉得这可以通过列表理解来完成,但是怎么做呢?

    given_string = "first.second.third.None"
    string_splitted = given_string.split('.')
    string_splitted[-1] = "fourth"
    given_string = ".".join(string_splitted)
    

    请注意,给定字符串中的点数(.)是常数(3)。所以我总是想替换字符串的第四个片段。

    5 回复  |  直到 6 年前
        1
  •  4
  •   Mark    6 年前

    看起来你应该能够做到这一点而不分裂成一个数组。找到最后一个 . 然后切到那里:

    > given_string = "first.second.third.None"
    > given_string[:given_string.rfind('.')] + '.fourth'
    
    'first.second.third.fourth'
    
        2
  •  3
  •   Vasilis G.    6 年前

    你可以试试这个:

    given_string = "first.second.third.None"
    given_string = ".".join(given_string.split('.')[:-1] + ["fourth"])
    print(given_string)
    

    产量:

    first.second.third.fourth
    
        3
  •  2
  •   nandal    6 年前

    试试这一行:

    print (".".join(given_string.split(".")[:-1]+["Fourth"]))
    

    产量:

    first.second.third.Fourth
    
        4
  •  0
  •   Andrew    6 年前

    你可以用rsplit。不管最后一次拆分之前有多少个点,这都会起作用

    given_string = "first.second.third.None"
    string_splitted = given_string.rsplit('.', 1)[0] + '.fourth'
    
    print(string_splitted)
    first.second.third.fourth
    
        5
  •  0
  •   Car    6 年前
    my_string = "first.second.third.None"
    my_sub = re.sub(r'((\w+\.){3})(\w+)', r'\1fourth', my_string)
    print(my_sub)
    first.second.third.fourth
    

    下面是对这种风格的一个很好的解释: How to find and replace nth occurence of word in a sentence using python regular expression?