我有一个字符串,里面有一些相对路径,如下所示:
<AdditionalIncludeDirectories>..\..\..\..\..\..\external\gmock\gmock-1.7.0\include;..\..\..\..\..\..\external\gmock\gmock-1.7.0\gtest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
我只想为每个路径添加 ..\..\
。
我可以使用 replace
方法来做到这一点,但这里的问题是“向上步骤”的数量不固定(取决于我要替换的字符串)。
如果我尝试将 ..\
替换为 ..\..\..\
之类的内容,我的脚本将替换他发现的每个事件。所以我的最终结果如下 ..\..\..\..\..\..\..\..\..\..\..\..\
.
那么我如何在 Python 3 中仅向此字符串中的每个路径添加 2 个“向上步骤”。
期望的结果是:
<AdditionalIncludeDirectories>..\..\..\..\..\..\..\..\external\gmock\gmock-1.7.0\include;..\..\..\..\..\..\..\..\external\gmock\gmock-1.7.0\gtest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
最佳答案
还有更好的方法,但这应该有效。
a = 'AdditionalIncludeDirectories>..\..\..\..\..\..\external\gmock\gmock-1.7.0\include;..\..\..\..\..\..\external\gmock\gmock-1.7.0\gtest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>'
b = re.search('>(.*)<', a)## Get paths str position
paths_str = a[b.start() + 1:b.end() - 1]## paths_str
paths = paths_str.split(';')
full_paths = ['..\..\{0}'.format(path) for path in paths]## adding up dirs
full = '{0}>{1}<;{2}'.format(a[:b.start()], ';'.join(full_paths),
a[b.end():])## Combining together.
关于python - 使用Python将给定的相对路径添加到字符串中的另一个路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46219322/