我想检查字符串中是否有“ int +特定单词”

Jeo*_*Kim 0 python python-3.x

那里!好吧,通常我会用英语示例询问有关字符串的问题,但是在最后一次,我发现由于语法上的差异(例如...使用split()时),可能会出现一些问题。因此,我将用韩国示例来问这个问题。

所以我想知道的就是这样。我想知道字符串是否具有,int+'?' like, 3? 5? 6? 9? 11? 20? (which means the date btw, so int should be 1~31) 但是我不知道如何检查单词。 int+'?' . 正如您已经注意到的,int应该放在单词之前'?'

ex_A = '??? 3? 3? ???.'
ex_B = '??? 4?? ?????.'
ex_C = '??? 3??? ???? ?? ???.'
Run Code Online (Sandbox Code Playgroud)

ex_A should return True一会儿ex_Bex_C就会return Falseex_B doesn't have '?'在其中以及ex_C has both int and '?'其中,但是那个int并不放在单词'?'之前。

所以...这一定是一个基本问题,有没有办法解决?我正在考虑在“?”之前制作一个角色。进入int,看看是否有错误。

但我认为您会有更多很棒的主意:)谢谢!

Psy*_*tho 5

最好的方法可能是使用正则表达式

import re

ex_A = '??? 3? 3? ???.'
ex_B = '??? 4?? ?????.'
ex_C = '??? 3??? ???? ?? ???.'

pattern = "\d{1,2}?"

sA = re.findall(pattern, ex_A)
sB = re.findall(pattern, ex_B)
sC = re.findall(pattern, ex_C)
print(sA)
print(sB)
print(sC)
Run Code Online (Sandbox Code Playgroud)

输出:

['3?']
[]
[]
Run Code Online (Sandbox Code Playgroud)

pattern 是用于搜索的正则表达式:

  • \d 表示0到9之间的任何数字。
  • {1,2} 表示一两次发生
  • ? 是什么意思?

因此,使用\d{1,2}?搜索模式搜索由一或两位数字后接?的序列。

*更新:

由于您只需要1到31之间的数字,因此可以使用模式 "([0-9]|[12][0-9]|3[01])?"

但是,数据的输出是

['3']
[]
[]
Run Code Online (Sandbox Code Playgroud)

所以,没有?我无法解释为什么。