Python手法

2024-06-28 20:07:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这里需要一些复杂的(对我来说)字符串操作。我有以下数据:

Candidate solution = [4, 2, 3]  (this can be any of {1,2,3,4})

需要根据以下标准(进一步)更换部分生产线。这里只显示了3个示例行。要替换的字符串显示在下面代码的粗体标记中。<;b>;标记不是原始标记的一部分。在

^{pr2}$

标准:

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

因此,任务是根据原始行中的内容,将给定行中的子字符串(或行尾的substr)替换为“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>

我的方法倾向于使用XYCXY标识子字符串,删除行尾的所有内容,并替换为新字符串。我对Python的了解还不够聪明,不过。在

谢谢你的意见。在


Tags: 字符串标记内容标准ifclcandidatemodified
1条回答
网友
1楼 · 发布于 2024-06-28 20:07:51

希望我能正确理解这个问题。在

你应该能够使用字符串。替换()功能足够容易。假设这些实际上是字符串,而不是列表,您可以这样做:

if Candidate[i] = 2:
    if "CVS=1', 'HTYP=16', 'MLV=2" in input:
        output = input.replace("CVS=1', 'HTYP=16', 'MLV=25", "CFIXD(0,1,0)")
        continue
    if "VS=1', 'HTYP=16', 'MLV=2" in input:
        output = input.replace("VS=1', 'HTYP=16', 'MLV=25", "FIXD(0,1,0)")
        continue

if Candidate[i] = 3:
    if "CVS=1', 'HTYP=16', 'MLV=25" in input:
        output = input.replace("CVS=1', 'HTYP=16', 'MLV=25", "CCS=1")
        continue

希望你能明白。在

相关问题 更多 >