如何修复这个正则表达式,以便使用这些输入字符串获得这些输出...

out = re.sub(r"(hs|h.s|h.s.)a m(\W|\b)", r"\1 am\2", out)
print(repr(out))

输入字符串示例...

#example 1.1
colloquial_hour = "Cerca de las 2: hs a m, hay que salir antes de esas hs a m"
#example 1.2
colloquial_hour = "A medida que avance cerca de la media noche 12: 04 hs a m. Deben ir a las 15 hs a m."
#example 1.3
colloquial_hour = "A mmm... cerca de las 12: h.s a m, hay que salir antes de esas h.s. a m"
#example 1.4
colloquial_hour = "A medida que avance cerca de las 12:04 hs. a m. Deben ir a las 15 h.s a m."

正确的输出:

#correct output for example 1.1
"Cerca de las 2: hs am, hay que salir antes de esas hs a m"
#correct output for example 1.2
"A medida que avance cerca de la media noche 12: 04 hs am. Deben ir a las 15 hs am."
#correct output for example 1.3
"A mmm... cerca de las 12: h.s am, hay que salir antes de esas h.s. a m"
#correct output for example 1.4
"A medida que avance cerca de las 12:04 hs. am. Deben ir a las 15 h.s am."

逻辑应该是,su将做一个数值,然后"a m"用原始字符串中的这个字符串"am"替换那个"a m"子字符串.

这些都是您必须将子串"a m"替换为"am"的所有可能情况

X a m
X: a m
X: hs a m
X: h.s. a m
X: h.s a m
X: hs. a m
X:  a m
X : hs a m
X  : h.s. a m
X : h.s a m
X  : hs. a m
X hs a m
X h.s. a m
X h.s a m
X hs. a m

#where "X" is a numerical value ("1", "2", "3", "4", "5", "6", ... )
#in all these cases, in which this pattern is met, "a m" must be replaced by "am"

推荐答案

您可以使用regex进行搜索:

(\d\W+)(h\.?s\.?\s+)?a\s+m\b

并使用以下命令替换:

\1\2am

RegEx Demo

RegEx Details:

  • (\d\W+):匹配捕获组#1中后跟1+非单词字符的数字
  • (h\.?s\.?\s+)?:匹配h,后跟s,后面有可选的圆点.这optional组是捕获组#2
  • a\s+m\b:匹配a,后跟1+空格,然后m与单词边界

Python相关问答推荐

将图像拖到另一个图像

如何在Python数据框架中加速序列的符号化

我如何根据前一个连续数字改变一串数字?

将输入聚合到统一词典中

driver. find_element无法通过class_name找到元素'""

Django admin Csrf令牌未设置

如何排除prefecture_related中查询集为空的实例?

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

从旋转的DF查询非NaN值

将一个双框爆炸到另一个双框的范围内

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

如何从比较函数生成ngroup?

我什么时候应该使用帆布和标签?

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

多索引数据帧到标准索引DF

如何在Polars中创建条件增量列?

在聚合中使用python-polars时如何计算模式

某些值的数值幂和**之间的差异

使用Scikit的ValueError-了解

如何仅使用数据帧操作获得特定的唯一数据帧组合?