【问题标题】:python regex relace for a stringpython 正则表达式替换字符串
【发布时间】:2022-11-07 20:12:13
【问题描述】:

我正在尝试在 python 上应用正则表达式以获取以下代码。我想用 usa 替换 usa_f1_t1。

例如:我的输入是 usa_f1, usa_tt1_f1_v1, usa_us_t1_v1 , us_us_v1

对于所有这些情况,我想忽略任何数字的字符串部分

usa_tt1_f1_v1 - 它应该给美国结果

usa_us_t1_v1 - 它应该给usa_us结果

usa_f1 - 它应该给美国结果

usa_phone - 它应该给美国电话结果

我正在尝试以下代码。请帮助,因为我是 python 新手

import re

Country_name = "usa_us_f1_t1_v1"
new_result = re.sub(r'[a-zA-Z0-9_]+', '', Country_name)

# Display the Content
print(new_result)

【问题讨论】:

  • 您的正则表达式也将匹配下划线;为什么你不希望它发生?
  • 看起来你想要(?:_[A-Za-z]*[0-9]+[A-Za-z0-9]*)+
  • 也许没有正则表达式'_'.join([x for x in s.split('_') if x.isalpha()])?见ideone.com/c7DqPS
  • 好的,我看到评论很有帮助,让我们将其转换为答案。

标签: python regex


【解决方案1】:

没有任何正则表达式:

'_'.join([x for x in s.split('_') if x.isalpha()])

请参阅Python demo online

它有什么作用?

  • s.split('_') - 用下划线分割字符串
  • 那么列表理解只保留那些完全由字母组成的块(x)(.isalpha() 会检查)。

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 2018-07-13
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多