【问题标题】:how can I substitute a matched string in python如何在python中替换匹配的字符串
【发布时间】:2020-04-06 17:11:52
【问题描述】:

我有一个字符串="/One/Two/Three/Four"

我想把它转换成 ="Four"

我可以在 perl 的一行中做到这一点

string =~ s/.*+\///g

如何在 python 中做到这一点?

【问题讨论】:

  • 常数是什么?你想取最后一个“/”后的最后一个单词吗?
  • 您的 perl 替换示例将导致空字符串;不是字符串"Four"

标签: python regex regex-greedy


【解决方案1】:
str_name="/One/Two/Three/Four"
str_name.split('/')[-1]

一般来说,split 是一种基于一些正则表达式将字符串转换为列表的安全方法。然后,我们可以调用该列表中的最后一个元素,在这种情况下恰好是“四”。

希望这会有所帮助。

【讨论】:

  • 请注意str.split() 不支持复杂的正则表达式。要在正则表达式上拆分,您需要改用 re.split()
【解决方案2】:

Python 的re 模块可以处理正则表达式。对于这种情况,你会这样做

import re

my_str = "/One/Two/Three/Four"
new_str = re.sub(".*/", "", my_str)
# 'Four'

re.sub() 是正则表达式替换方法。就像您的 perl 正则表达式一样,我们只需查找任意数量的字符,后跟一个斜杠,然后将其替换为空字符串。剩下的是最后一个斜线之后的内容,即 4。

【讨论】:

  • 谢谢 这正是我想要的
【解决方案3】:

解决这个问题的可能性很多。一种方法是索引字符串。其他字符串方法可以找到here

string ="/One/Two/Three/Four"
string[string.index('Four'):]

此外,您可以使用.split('/') 用斜线分割字符串

print(string.split('/')[-1])

另一种选择是正则表达式:参见here

【讨论】:

    猜你喜欢
    • 2016-06-17
    • 2020-11-12
    • 2016-09-26
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2019-05-13
    相关资源
    最近更新 更多