【问题标题】:How do I get a number from a string in python?如何从python中的字符串中获取数字?
【发布时间】:2022-01-13 07:13:28
【问题描述】:

需要帮助的人,

s = "I waited 60 minutes. I cannot wait any longer. My home is 20 miles away."

如何提取旁边有分钟的数字。然后将数字除以 2 并得到下面的字符串作为输出,

“我只等了 30 分钟。我不能再等了。我的家在 20 英里外。”

“60 分钟”应替换为“仅 30 分钟”。可以有任何数字,而不是 60。

【问题讨论】:

  • 请在每个帖子中保留一个问题,并展示您的尝试,或至少您所做的研究。从字符串中提取数字并不是一个新问题。
  • 正则表达式函数的救援

标签: python string join numbers substring


【解决方案1】:

正则表达式替换函数最适合该任务

一行

import re
s = "I waited 60 minutes. I cannot wait any longer. My home is 20 miles away."

print(re.sub("(\d+)( minutes)",lambda m:str(int(m.group(1))//2)+m.group(2),s))

打印:

I waited 30 minutes. I cannot wait any longer. My home is 20 miles away.

lambda 函数在输入中输入正则表达式组,它“只是”将第一个参数转换为整数,将其除以 2,然后转换回字符串,并重建时间字符串。

【讨论】:

    【解决方案2】:

    使用for循环的另一种方法,

    def isnum(s):
        res= False
        try:
            n = int(s)
            res = True
        except:
            pass
        return res
    
    s = "I waited 60 minutes. I cannot wait any longer. My home is 20 miles away."
    
    j = -1
    
    s_list = s.split(' ')
    res = ""
    for i in s_list:
        j += 1
        if isnum(i):
            if s_list[j+1] in ['minute', 'minute.', 'minutes', 'minutes.']:
                i = str(int((int(i)/2)))
        res += i + " "
    
    print(res)
    

    【讨论】:

      【解决方案3】:

      如果可以,请将其声明为f“I waited {myTime (60)} minutes. I cannot wait any longer. My home is 20 miles away.”。然后你可以简单地改变变量整数myTime

      如果你真的必须从原始输入中获​​取它,我建议先拆分字符串。然后您可以遍历每个单词并检查int(word) 是否为数字。

      【讨论】:

        猜你喜欢
        • 2020-10-07
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 2012-07-05
        • 2018-11-26
        相关资源
        最近更新 更多