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

时间:2019-04-30 07:11:43

标签: 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월인데 삼일절이 있는 날이야.'

ex_A should return True,而ex_Bex_Creturn Falseex_B doesn't have '일'ex_C has both int and '일',但该int不在单词“일”之前。

所以...这必须是一个基本问题,有办法解决吗?我当时正在考虑将'일'之前的字符转换为int,看看是否有错误。

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

3 个答案:

答案 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-匹配您的整数 일-匹配您的字符串

相关问题