Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python查找字符串并替换_Python_Python 3.x - Fatal编程技术网

Python查找字符串并替换

Python查找字符串并替换,python,python-3.x,Python,Python 3.x,我有Python中的字符串: s=“htmlhtl{%static path1%}htmlhtml{%static path2/path3%}htmlhtml” 和变量: path=“www.static.com” 我想从s创建一个新字符串,该字符串将包含在{%static…%}文件夹的标记路径上: "htmlhtl www.static.com/path1 htmlhtml www.static.com/path2/path3 htmlhtml" 我已经打开了python文档,并尝试自己去做

我有Python中的字符串:

s=“htmlhtl{%static path1%}htmlhtml{%static path2/path3%}htmlhtml”

和变量:

path=“www.static.com”

我想从s创建一个新字符串,该字符串将包含在
{%static…%}
文件夹的标记路径上:

"htmlhtl www.static.com/path1 htmlhtml www.static.com/path2/path3 htmlhtml"

我已经打开了python文档,并尝试自己去做,但我甚至无法匹配标记。对于regexp来说,这个任务似乎非常常见。

您可以使用
Django
的内置方法或简单的regex来实现相同的功能:

import re

s = "htmlhtl {% static path1 %} htmlhtml {% static path2/path3 %} htmlhtml " 

rx = re.compile(r'{% static (?P<path>\S+) %}')
# search for {% static ...%}

s = rx.sub(r'www.static.com/\g<path>', s)
print(s)
# htmlhtl www.static.com/path1 htmlhtml www.static.com/path2/path3 htmlhtml 
重新导入
s=“htmlhtl{%static path1%}htmlhtml{%static path2/path3%}htmlhtml”
rx=re.compile(r'{%static(?P\S+)%})
#搜索{%static…%}
s=rx.sub(r'www.static.com/\g',s)
印刷品
#htmlhtl www.static.com/path1 htmlhtml www.static.com/path2/path3 htmlhtml


请参阅工作模式。

以下是我使用正则表达式为您提供的信息提供的示例解决方案:

>>> import re
>>> s = "htmlhtl {% static path1 %} htmlhtml {% static path2/path3 %} htmlhtml "
>>> path = "www.static.com"
>>> pat = re.compile(r'\{%\s*static\s+([\w/]+)\s*%\}')
>>> re.sub(pat, path+r'/\1',s)
'htmlhtl www.static.com/path1 htmlhtml www.static.com/path2/path3 htmlhtml '

这是django吗?您得到的错误是什么?如果它是django,您是否在模板中预先执行了{%load static%}?是的,它是django,我想手动执行,并将我的文件设置为字符串,以防止django每次尝试从磁盘读取它。原因是文件太小,客户经常要求他。我不能使用缓存,因为我根本不需要缓存,我的站点只有一个页面,可以通过Angular REST API继续与站点交互。非常感谢。你能给我一些用Python学习regexp的链接吗?@LuchkoSerega很高兴它起作用了。一个好的起点是