这些是输入字符串示例:
#example 1.1
colloquial_hour = "Hola nos vemos a las diez y veinte a m, ten en cuenta que al amanecer tendremos que estar despiertos, porque debemos estar alli a eso de nueve a m o las diez y cuarto a m"
#example 1.2
colloquial_hour = "A mi me parece entre las 10 15 am y las 11 a m, o a las 15 a m aunque quizas a medianoche este bien a eso de las 00:00 a m"
#example 1.3
colloquial_hour = "Puede que a las 10 am. Hay 10 a medias, a m mmm... creo que en 10 estarian para terminar a las 11:00 hs a m 11:59 a m"
#example 1.4
colloquial_hour = "Amediados a mediados del 30 antes de y dia; me parace que hay que estar en casa. Medianamente a, mediados de las 05 a m o cerca de 6 a m."
我尝试过简单的替换,但我认为必须使用正则表达式模式进一步限制这些情况,以便不会进行不需要的替换...
colloquial_hour = colloquial_hour.replace('a m', 'am ')
,并且能够获取该字符串作为输出...
每个示例的正确输出:
#example 1.1
colloquial_hour = "Hola nos vemos a las diez y veinte am, ten en cuenta que al amanecer tendremos que estar despiertos, porque debemos estar alli a eso de nueve am o las diez y cuarto am"
#example 1.2
colloquial_hour = "A mi me parece entre las 10 15 am y las 11 am, o a las 15 am aunque quizas a medianoche este bien a eso de las 00:00 am"
#example 1.3
colloquial_hour = "Puede que a las 10 am. Hay 10 a medias, a m mmm... creo que en 10 estarian para terminar a las 11:00 hs am 11:59 am"
#example 1.4
colloquial_hour = "Amediados a mediados del 30 antes de y dia; me parace que hay que estar en casa. Medianamente a, mediados de las 05 am o cerca de 6 am."
在这种情况下,伪模式是: 一些数字“a m”替换为字符串“am”一个或多个空格、句点、逗号或直接在字符串末尾
还应该考虑可能存在不完整的书面时间表的情况,其中“am”前面会出现 ":"
、":"
、": "
, "hs"
, "hs"
, "hs"
, "h.s."
, “h.s.”
、“h.s.”
、“h.s”
、“h.s”
或 “h.s”
,例如,
input_t = "a las 12: a m"
output = "a las 12: am"
input_t = "a las 12 : a m"
output = "a las 12 : am"
input_t = "a las 12 hs a m"
output = "a las 12 hs am"
input_t = "a las 12:hs a m"
output = "a las 12:hs am"
input_t = "a las 12: hs a m"
output = "a las 12: hs am"
input_t = "a las 12hsa m"
output = "a las 12hs am"
input_t = "a las 12h.sa m"
output = "a las 12h.s am"
input_t = "a las 12 h.sa m"
output = "a las 12 h.s am"
input_t = "a las 12 h.s.a m"
output = "a las 12 h.s. am"
最佳答案
对于第一部分,我制作了这个正则表达式:
out = re.sub(r"([0-9][0-9]\W)a m(\W|\b)", r"\1am\2", colloquial_hour)
它将“am”更改为“am”,保留之前和之后的内容。
对于“hs”或“h.s”我这样做了:
out = re.sub(r"(hs|h.s)(\.)?\W*a m(\W|\b)", r"\1\2 am\3", out)
它在“a m”之前搜索“hs”、“h.s”。您可以组合这两个正则表达式,它们非常相似或按顺序使用它们。
如果有任何问题请告诉我。
关于python - 创建模式来检测序列的出现,以便您可以限制在哪些情况下替换输入字符串中检测到的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73367407/