问题标签 [re]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - NoneType 对象没有属性“组”
我正在通过自动化无聊的东西,在第二部分我有一些代码的问题,因为返回的是一个 AttributeError,即使我完全复制了书中所写的内容:
regex - 正则表达式测试函数。可视化代码
我有以下代码:
列表任务中的函数在上面定义,但它们对我的问题并不重要。我了解 main 函数的整个运行,直到最后两行:
我不明白什么task.__name__
意思。名字必须是__name__ == '__main__'
这样,我想我的问题变成了什么task.'__main__'
意思(如果我错了,请纠正我)?我将上述两行的第一行解释为:
我知道这是不对的,因为 if 语句下没有任何内容,但我不知道如何测试代码以了解它的含义。我只是想更好地理解,所以对不是非常高级的程序员的人的解释会很好
提前致谢!
python - 用 Python re 替换为自定义函数
对于一个字符串
我想用{{...}}
里面列表中的随机一项来替换每个模式,即:
我记得模块中有一种方法re
不仅可以简单地替换 like re.sub
,而且具有自定义替换功能,但是我在文档中找不到这个了(也许我正在搜索错误的关键字......)
这不会给出任何输出:
python - 如果以下模式允许重复,则 Python 重新否定后向断言
如果以下模式允许重复,我无法使用 python re 模块使否定后向断言工作:
我的真实案例应用程序是,只有当匹配项前面没有'function'时,我才想在文件中找到匹配项:
这是一个限制吗?
python - 在 re.sub 中传递函数时获取匹配号
在使用函数时re.sub
:
如何获得里面的比赛号码custom_replace
?
即 0、1、2 表示示例输入字符串的三个“o”。
注意:我不想为此使用全局变量,因为多个此类操作可能发生在不同的线程等中。
python-3.x - 当它们的 fuzz.WRatio > 90 时将所有计数相加,否则保持不变
我想要做的实际上是按一列中的所有相似字符串分组,如果有相似性,则将它们的相应计数相加,否则,留下它们。有点类似这个帖子。不幸的是,我无法将其应用于我的案例: 如何使用正则表达式匹配按列对 Pandas 数据进行分组
不幸的是,我最终完成了以下步骤:
我编写了一个函数来打印每行字符串的所有 fuzz.Wratio,当每一行从顶部进行线性搜索以检查其余行中是否还有其他类似的字符串时。如果 WRatio > 90,我想将这些行的相应计数相加。否则,将它们留在那里。
我创建了一个如下所示的测试数据:
所以我想要做的是将结果作为数据框,如:
到目前为止,我的函数只给了我每行的模糊率,据我了解,每行与自身比较 3 次(这里我们有 4 行)。所以我的函数输出看起来像:
这只是我用这个测试数据编写的函数的整个输出的一部分。最后一行“OMEGA”会给我一个大约 18 的模糊率。
我的功能是这样的:
所以在运行这个函数并得到输出之后,我试图得到我最终想要的。在这里,我在上面创建的 df 上尝试了 group by:
但是这样一来,我的数据框中仍然需要一个“名称”,我该如何决定这个总数的哪些名称,比如这里的 9 个。“Apple.Inc”或“apple.inc”或“APPLE.INC”?
或者,我是否让它太复杂了?有没有办法一开始就按“名称”分组,然后一视同仁地对待“Apple.Inc.”、“apple.inc”和“APPLE.INC”,那么我的问题就解决了。我已经很长一段时间了。任何帮助将不胜感激!谢谢!
python - 正则表达式结果之前的前导空格
我正在使用规则来使用正则表达式在 python 中获取子字符串。但我发现有些结果会有前导空格,而有些则没有。我知道我可以使用 .strip() 删除空格。但我想了解为什么会有空格。任何人都可以帮忙吗?
谢谢
Ex 1.(没有前导空格)。
结果:
Ex 2.(前导空格)。
结果:
Ex 3.(前导空格)。
结果:
python - 测试重新编译“即时”编译给出一个空匹配,而不是无
我正在尝试测试一堆正则表达式案例(特别是如果某物是测量单位:5px、300mm 等)。
我能找到的关于 re.match 的所有问题都告诉我,我对此进行了如下测试:
正如预期的那样。
但是,如果我想在循环中编译正则表达式,我会得到以下信息:
这意味着我不能再is None
用作测试。
为什么是这样?我应该如何正确测试不匹配?
python - 从python中的字符串中分离字母和数字部分
我有多个包含字母和数字部分的字符串,我想将这些部分分开。
我得到了所需的输出。但是当我有另一个字符串时
0.2
分开0
,2
我不想要。有什么可以帮助我的吗?
python - 加速 Pandas 的 findall 日期语法分析
我有这个系列
df = pd.Series(['01/January/2021', '09/Sept/2021', 'November/11/2022', '02/02/2016', '2021/01/August', '2022-Feb-02'])
提取我申请的 3 个字母
df.str.upper().str.findall(r'[a-zA-Z]{3}')
这给出了一个输出
['JAN', 'UAR'], ['SEP'], ['NOV', 'EMB'], [], ['AUG', 'UST'], ['FEB']
运行 %timeit
为了获得我必须做的第一个分组
df.str.upper().str.findall(r'[a-zA-Z]{3}.str[0]')
导致
['JAN', 'SEP', 'NOV', nan, 'AUG', 'FEB']
再次运行 %timeit 结果到
我也有月份的清单
_calc = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
我的最后一行代码现在是
df.str.upper().str.findall(r'[a-zA-Z]{3}').str[0].isin(_calc).all()
这给出了这个系列的 False,这是预期的结果。
运行 %timeit 最终给出
我为什么要这样做:我正在从 csv 文件中读取日期,随着时间的推移,我发现日期格式是一个非常大的问题,因为这取决于用户区域日期格式,因此确定哪个月份可能是一个问题,因此,如果月份的格式为 %b 或 %B,那么我确信我的代码选择了正确的月份,然后可以将其转换为日期时间。
那么问题出在哪里?如果我针对 100 万个条目运行我的一个班轮并且 %timeit 这就是我得到的
我怎样才能加快速度,减速发生在哪里?