从文件中删除以包含引号的特定字符串开头的行

2024-06-16 08:56:21 发布

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

我需要删除大约25000行中包含SEU/C0的大约4000行。 在以下行中查找SEU:

inpin "SEUC0/example_controller/U0/wrapper_wrappe/genx7.wrapper_controller/pid_reg<3>" A6 ,

我的测试文件的较大部分如下所示:

outpin "XDL_DUMMY_INT_R_X27Y147_TIEOFF_X29Y147" HARD1 ,
  inpin "SEUC0/example_controller/U0/wrapper_wrapper/genx7.wrapper_controller/controller_kcpsm3/pc_vector_carry<7>" A6 ,
  inpin "SEUC0/example_controller/U0/wrapper_wrapper/genx7.wrapper_controller/controller_kcpsm3/pc_vector_carry<7>" B6 ,
  inpin "SEUC0/example_controller/U0/wrapper_wrapper/genx7.wrapper_controller/controller_kcpsm3/pc_vector_carry<7>" C6 ,
  inpin "SEUC0/example_controller/U0/wrapper_wrapper/genx7.wrapper_controller/controller_kcpsm3/pc_vector_carry<7>" D6 ,
  pip CLBLM_R_X27Y147 CLBLM_IMUX13 -> CLBLM_L_B6 , 
  pip CLBLM_R_X27Y147 CLBLM_IMUX34 -> CLBLM_L_C6 , 
  pip CLBLM_R_X27Y147 CLBLM_IMUX42 -> CLBLM_L_D6 , 
  pip CLBLM_R_X27Y147 CLBLM_IMUX5 -> CLBLM_L_A6 , 
  pip INT_R_X27Y147 VCC_WIRE -> IMUX13 , 
  pip INT_R_X27Y147 VCC_WIRE -> IMUX34 , 
  pip INT_R_X27Y147 VCC_WIRE -> IMUX42 , 
  pip INT_R_X27Y147 VCC_WIRE -> IMUX5 ,

这就是我尝试的解决方案:

f = open("test.xdl","r+")
d = f.readlines()
f.seek(0)
for i in d:
    if i != "SEU":  # want to remove the SEU string
        f.write(i)
f.truncate()
f.close()

如果我这样做:

for i in d:
    if i=='inpin "SEUC0/':
        f.write(i)
f.truncate()
f.close()

输出文件为空。你知道吗

当我尝试的时候

i!="inpin SEUC0/ 

它不起作用,因为它是一个长字符串,如果我写

"inpin "SEUC0/""

Python给出了一个错误。你知道吗

我是否可以删除所有包含SEUC0的行?你知道吗


Tags: pipexamplewrapperintvectorcontrollerpcseu
1条回答
网友
1楼 · 发布于 2024-06-16 08:56:21

看起来你的代码几乎可以正常工作,除了引用字符串和进行比较的方式。这个怎么样?你知道吗

f = open("test.xdl","r+")
d = f.readlines()
f.seek(0)
for i in d:
    if not i.strip().startswith('inpin "SEUC0/'):
        f.write(i)
f.truncate()
f.close()

请注意,这在搜索字符串周围使用单引号,因此字符串可以包含双引号。它还使用.strip()删除前导空格,然后使用.startswith()检查行是否以正确的子字符串开头。使用==!=时,它们会检查字符串是否完全相同。但您只想检查行是否以特定字符串开头。你知道吗

相关问题 更多 >