有!好吧,通常我会用英语示例询问有关字符串的问题,但是在最后一次,我发现由于语法上的差异(例如...使用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월인데 삼일절이 있는 날이야.'
ex_A should return True
,而ex_B
和ex_C
将return False
。 ex_B doesn't have '일'
和ex_C has both int and '일'
,但该int不在单词“일”之前。
所以...这必须是一个基本问题,有办法解决吗?我当时正在考虑将'일'之前的字符转换为int,看看是否有错误。
但是我认为您会有更多很棒的主意:)谢谢!
答案 0 :(得分:5)
可能最好的方法是使用regular expressions:
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)
输出:
['3일']
[]
[]
pattern
是用于搜索的正则表达式:
\d
表示0到9之间的任何数字。{1,2}
表示一次或两次发生일
的意思是일因此,使用\d{1,2}일
作为搜索模式,您将搜索一个由一两位数字和一个일组成的序列。
*更新:
由于只需要1到31之间的数字,因此可以使用模式"([0-9]|[12][0-9]|3[01])일"
然而,数据的输出是
['3']
[]
[]
因此,没有일,我无法解释原因。
答案 1 :(得分:2)
re.search
应该起作用:
pattern = re.compile(r'\d+일')
strings = [
'오늘은 3월 3일 입니다.',
'오늘은 4월의 어느날이야.',
'내일은 3월인데 삼일절이 있는 날이야.',
]
print([pattern.search(s) for s in strings])
将打印[<_sre.SRE_Match object; span=(7, 9), match='3일'>, None, None]
(因此本质上为true,false,false)。
您可能希望使数字模式比\d+
更精确(数字序列可以是任何数字序列,因此99일
将匹配)。
答案 2 :(得分:2)
使用正则表达式,
Students
\ d-匹配您的整数 일-匹配您的字符串