GVKun编程网logo

python re.sub,仅替换部分匹配项(python re 替换部分)

12

以上就是给各位分享pythonre.sub,仅替换部分匹配项,其中也会对pythonre替换部分进行解释,同时本文还将给你拓展c–Python中的最大重量/最小成本二部分匹配代码、pythonpyth

以上就是给各位分享python re.sub,仅替换部分匹配项,其中也会对python re 替换部分进行解释,同时本文还将给你拓展c – Python中的最大重量/最小成本二部分匹配代码、python python-docx 替换word文档部分内容、Python re.match()超过列表且非匹配项设置为np.nan、python re.sub 括号匹配替换匹配到的内容后接数字等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

python re.sub,仅替换部分匹配项(python re 替换部分)

python re.sub,仅替换部分匹配项(python re 替换部分)

我是python的新手

我需要用一个正则表达式匹配所有情况并进行替换。这是一个示例子字符串->所需结果:

<cross_sell id="123" sell_type="456"> --> <cross_sell>

我想在我的代码中做到这一点:

myString = re.sub(r''\<[A-Za-z0-9_]+(\s[A-Za-z0-9_="\s]+)'', "", myString)

而不是替换完之后的所有内容<cross_sell,它替换了所有内容并返回''>''

re.sub是否有办法仅替换捕获组而不是整个模式?

答案1

小编典典

您可以使用替换组:

>>> my_string = ''<cross_sell id="123" sell_type="456"> --> <cross_sell>''>>> re.sub(r''(\<[A-Za-z0-9_]+)(\s[A-Za-z0-9_="\s]+)'', r"\1", my_string)''<cross_sell> --> <cross_sell>''

注意,我将第一组(要保留的组)放在括号中,然后通过"\1"在替换字符串中使用修饰符(第一组)将其保留在输出中。

c – Python中的最大重量/最小成本二部分匹配代码

c – Python中的最大重量/最小成本二部分匹配代码

我在二分图中搜索最大重量/最小成本匹配的 Python代码.我一直在使用NetworkX中的一般情况下最大重量匹配代码,但是我发现我的需求太慢了.这可能是由于通用算法较慢的事实,以及NetworkX解决方案完全在Python中实现的事实.理想情况下,我想找到一些Python代码,用于包含一些C/C++代码的二分法匹配问题,但现在,比NetworkX实现更快的事情将会有所帮助.

解决方法

经过进一步的调查,我发现以下两个模块特别有用( http://pypi.python.org/pypi/pyLAPJV/0.3和 http://pypi.python.org/pypi/hungarian).它们都是使用Python绑定在C中实现的算法,并且运行速度比NetworkX匹配实现要快得多.但是,pyLAPJV实现似乎对我的需求来说有点太过分了,并且不能很好地处理相同加权的边.匈牙利语模块(虽然据说比pyLAPJV算法慢)比我正在处理的数据大小上的NetworkX实现速度大约3个数量级.我还要再次看看kunigami建议的代码,因为我相信它可以很容易地通过Shedskin运行,从而给出一个相当快的实现.

python python-docx 替换word文档部分内容

python python-docx 替换word文档部分内容

https://blog.csdn.net/m0_37052320/article/details/79556747

最根本的参考当然还是官方的文档,相当不错的中文讲解。
有人已经做了如何修改一些格式的博客:用python-docx修改已存在的Word文档的表格的字体格式。
我这里给出替换内容给的例子,简单来说,就是使用一个函数.clear()清除原来内容,然后add_run增加内容:

document = docx.Document(''*.docx'')

docText2 = [paragraph.text for paragraph in document.paragraphs]
p = document.paragraphs[22].clear()
run1 = p.add_run(''XXXX:        '')
font = run1.font
font.size = Pt(12)
font.bold = True
run2 = p.add_run(str_to_write)
run2.underline = True
run2.size = Pt(12)
————————————————
版权声明:本文为CSDN博主「binqiang2wang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37052320/article/details/79556747

 

Python re.match()超过列表且非匹配项设置为np.nan

Python re.match()超过列表且非匹配项设置为np.nan

问题在于

str(l)

操作正在简化您的浮点数。从2.0000000 ...到'2.0'

“ 2.0”与您的模式不匹配。解决此问题的一种方法是使用此新模式。将与点后的1个或多个零匹配:

r'\d\.0+'

使用新模式,您的输出将是所需的:

[nan,2.0,nan,nan]

python re.sub 括号匹配替换匹配到的内容后接数字

python re.sub 括号匹配替换匹配到的内容后接数字

如果代码为:

text = re.sub(r''(?<=[{])([a-z]+)6(?=[}])'', r''\13'', text)

上面代码会报错,因为没有组合13,所以不能获得组合13的内容。

但是我们要实现的是将{ni6}中的ni6替换成ni3,我们应该这么写:

text = re.sub(r''(?<=[{])([a-z]+)6(?=[}])'', r''\g<1>3'', text)

 

另外,记录我的批量替换代码(将文件夹下的所有文件的拼音6都替换成3):

# -*- coding: utf-8 -*-

import os
import glob
import shutil
import re

here = os.path.dirname(os.path.abspath(__file__))

for path in glob.glob(os.path.join(here, ''**'', ''*''), recursive=True):
    if path.endswith(''.py'') or not os.path.isfile(path):
        continue
    print(path)
    dst_path = path + ''.jacen_bak''
    os.rename(path, dst_path)
    # shutil.copy2(path, dst_path)
    try:
        with open(dst_path, ''r'', encoding=''utf-8'') as f:
            text = f.read()
        text = re.sub(r''(?<=[{])([a-z]+)6(?=[}])'', r''\g<1>3'', text)
        with open(path, ''w'', encoding=''utf-8'') as f:
            f.write(text)
        os.remove(dst_path)
    except UnicodeDecodeError as e:
        os.rename(dst_path, path)
        print(e, path)

 

关于python re.sub,仅替换部分匹配项python re 替换部分的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于c – Python中的最大重量/最小成本二部分匹配代码、python python-docx 替换word文档部分内容、Python re.match()超过列表且非匹配项设置为np.nan、python re.sub 括号匹配替换匹配到的内容后接数字的相关信息,请在本站寻找。

本文标签: