【问题标题】:Replace all digits with underscores用下划线替换所有数字
【发布时间】:2022-01-05 06:39:47
【问题描述】:

我无法让我的程序在我的函数中生成结果。目的是用给定用户输入的下划线替换所有数字。我做错了什么?

def checknum(str_input):
    for c in str_input: # loop for each characters in the string entered
    if c.isdigit(): # loop for each characters checking for digits
        change = '_'
        result = str_input.replace(c, change)
str_input = input("Enter in a string: ")
print (f'Output: {result}')

【问题讨论】:

  • 永远不要修改你正在迭代的数据。这可以通过正则表达式替换轻松处理:docs.python.org/3/library/re.html#re.sub
  • 感谢@JanWilamowski,我对这一切都很陌生,所以尽量保持简单
  • 这并不丢人,但最好从一开始就习惯最佳实践。现在有一个答案可以实现我的建议。

标签: python-3.x function


【解决方案1】:

使用正则表达式更容易,因为它不会修改您的原始字符串。感谢您指出@Jan Wilamowski。

import re

def checknum(str_input):
    return re.sub(r"\d", "_", str_input)

str_input = input("Enter a string: ")
print(checknum(str_input))

【讨论】:

    【解决方案2】:

    这里的结果是你需要返回的变量。你在函数之外打印“结果”,这就是为什么你没有得到任何输出,你必须调用你实现的函数。现在回到您的解决方案,str_input 的值必须用下划线替换,其中将找到数字值,然后更新并将其分配给 str_input 变量。 #NB:确保代码缩进。 下面是解决方案,

    def checknum(str_input):
      for c in str_input: # loop for each characters in the string entered
          if c.isdigit(): # loop for each characters checking for digits
              change = '_'
              str_input = str_input.replace(c, change)
      return str_input
    
    str_input = input("Enter in a string: ")
    print (f'Output: {checknum(str_input)}')
    

    【讨论】:

    • 非常感谢。我看到我也使用了错误的变量名,我想知道为什么这也不起作用,再次感谢
    • 对我有帮助.. 感谢@Akash 的回答
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2011-09-20
    相关资源
    最近更新 更多