日安,
我没有编程背景,但进入记事本+黑客数据库的CAD软件,我们正在使用的工作。 这个论坛帮助我解决了很多以前的问题,但我似乎找不到正确的方法来解决目前我面临的问题。 提前感谢您的任何帮助!
我希望将特定的行移动到radius2>0(.*?)
<LProfil>
<ID>2</ID>
<MATCHCODE>L 10x10x2,0</MATCHCODE>
<Schenkela>10</Schenkela>
<Schenkelb>10</Schenkelb>
<Schenkelstaerke_S>2,0</Schenkelstaerke_S>
<Radius1>0</Radius1>
<Radius2>0</Radius2>
</LProfil>
<LProfil>
<ID>3</ID>
<MATCHCODE>L 12x12x2,0</MATCHCODE>
<Schenkela>12</Schenkela>
<Schenkelb>12</Schenkelb>
<Schenkelstaerke_S>2,0</Schenkelstaerke_S>
<Radius1>0</Radius1>
<Radius2>0</Radius2>
</LProfil>
所以目标结果是这样的
<LProfil>
<ID>2</ID>
<Schenkela>10</Schenkela>
<Schenkelb>10</Schenkelb>
<Schenkelstaerke_S>2,0</Schenkelstaerke_S>
<Radius1>0</Radius1>
<Radius2>0</Radius2>
<MATCHCODE>L 10x10x2,0</MATCHCODE>
</LProfil>
<LProfil>
<ID>3</ID>
<Schenkela>12</Schenkela>
<Schenkelb>12</Schenkelb>
<Schenkelstaerke_S>2,0</Schenkelstaerke_S>
<Radius1>0</Radius1>
<Radius2>0</Radius2>
<MATCHCODE>L 12x12x2,0</MATCHCODE>
</LProfil>
我已经使用regex命令以多种方式改变数据库,但无法找到将行下移的方法。 我尝试了以下操作:
-制作makro,同时使用键盘手动向下移动目标线。 我无法创造一个始终如一的makro来完成这项工作。
_我还尝试在“查找内容”窗口中复制整个起始块,如下所示:
Find what:
<MATCHCODE>(.*?)</MATCHCODE>\n<Schenkela>(.*?)</Schenkela>\n<Schenkelb>(.*?)</Schenkelb>\n<Schenkelstaerke_S>1,0</Schenkelstaerke_S>\n<Radius1>0</Radius1>\n<Radius2>0</Radius2>
Replace with:
<Schenkela>\2</Schenkela>\n<Schenkelb>\3</Schenkelb>\n<Schenkelstaerke_S>10</Schenkelstaerke_S>\n<Radius1>0</Radius1>\n<Radius2>0</Radius2>\n<MATCHCODE>\1</MATCHCODE>
我知道最后一次尝试是相当愚蠢的,但那时候我知道我需要帮助解决我的问题,因为这里没有人知道如何编码,我在这里寻求帮助。
TLDR:我正在寻找一种方法,将一个带有重复出现的单词和随机数的行移动到一个现在的位置,向下移动一个设定的行数,或者在一个重复出现的行之后向下移动。
提前感谢您的任何帮助! 卢卡斯
下面是您可以做的:
lst = s.split('\n') # s is the string
for i,line in enumerate(lst):
if "<MATCHCODE>" in line:
lst.pop(i) # Remove that line
lst.insert(i-3, line) # Insert that line 3 lines above its original position
print('\n'.join(lst))
为了更安全,您可以替换
if "<MATCHCODE>" in line:
与
ln = line.strip()
if ln[:11]=="<MATCHCODE>" and ln[-12:]=="</MATCHCODE>":