这里需要一些棘手的(对我来说)字符串操作。我有以下数据:
Candidate solution = [4, 2, 3] (this can be any of {1,2,3,4})
需要根据下面的标准(更远)替换部分行。此处仅显示 3 个示例行。要替换的字符串显示在下面代码中的 < b > 粗体标记内。< b > 标签不是原件的一部分。
Orig. Line # 34 ['T10', 'M312', 'P10', 'Z3710', 'CL=L1', '<b>RH=1</b>']
Orig. Line # 37 ['L20B', '<b>CVS=1', 'HTYP=16', 'MLV=25</b>']
Orig. Line # 48 ['L115B', '<b>CVS=1', 'HTYP=16', 'MLV=25</b>']
标准:
if Candidate[i] == 2:
modified line37 = "L20B, <b>CFIXD(0,1,0)</b>"
# so, replaced CVS=1, HTYP=16, MLV=25 with CFIXD(0,1,0)
if Candidate[i] == 3:
modified line48 = "L115B, <b>CCS=1</b>"
if Candidate[i] == 4:
modified line34 = "T10,M312,P10,Z3710,CL=L1, <b>CVS=1,HTYP=16,MLV=25</b>"
if Candidate[i] == 1:
modified linexx = whatever comes here
因此,任务是根据在原始行中找到的内容,用“ XY”或“CXY ”替换给定行中的子字符串(或行尾的子字符串) 。
原始行可能有几种形式,如下所示:
1a. T15,M1,P2,X4'6",CL=3,<b>FIXD(0,1,0)</b>
--OR--
1b. F15,<b>CFIXD(0,1,0)</b>
因此,可以看出,“FIXD()”可以显示为项目 1a 或 1b。主要的是,替换取决于已经存在的内容:“FIXD”或“CFIXD”或“VS”或“CVS”(16 个变体)。
显示了更多的行变体(要替换的实际 str 显示 b/w 标签):
2a. T55,P3,X3'0",CL=2,<b>G,MU=0.500,STIFF=Rigid</b>
2b. T55,P3,X3'0",CL=2,<b>G,MU=0.500,STIFF=Rigid,GGAP=0.500</b>
3a. T123,JS,X2'0",CFFOR=5000,FTOR=500,WGT=0.5,<b>LS(0.000,None),DV(0.0000,1.0000,0.0000),STIFF=Rigid</b>
3b. L130,<b>CLS(0.000,0.250),DV(0.0000,1.0000,0.0000),STIFF=Rigid</b>
4. T124,X1'0",<b>CUS(1,0,0)</b>
5. T130,X1'0",Y1'0",<b>CRH=1</b>
6. F35,<b>CCS=1</b>
7. L40A,<b>CK=10000,DV(0.0000,1.0000,1.0000</b>
我的方法倾向于使用XY或CXY识别子字符串,删除行尾的所有内容,并替换为新字符串。我对 Python 的了解还不够,所以不能聪明地使用它。
感谢您的输入。