需要帮助伙计们
s = "I waited 60 minutes. I cannot wait any longer. My home is 20 miles away."如何提取旁边有分钟数的数字。然后用2除以这个数字,得到下面的字符串作为输出,
“我只等了30分钟。我不能再等了。我的家在20英里之外。“
“60分钟”应改为“只有30分钟”。而不是60,可能有任何数字。
发布于 2021-12-08 10:43:54
另一个使用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)发布于 2021-12-08 10:20:20
正则表达式替换函数最适合该任务。
单行
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函数输入的是regex组,它“只是”将第一个参数转换为整数,将其除以2,然后将其转换回字符串,并重新构建时间字符串。
发布于 2021-12-08 10:18:04
如果可以的话,将其声明为f“I waited {myTime (60)} minutes. I cannot wait any longer. My home is 20 miles away.”。然后您可以简单地更改变量整数myTime。
如果您真的需要从原始输入中提取它,我建议首先拆分字符串。然后,您可以遍历每个单词,并检查int(word)是否是一个数字。
https://stackoverflow.com/questions/70273255
复制相似问题