我需要在大约25,000行中删除大约四千行包含SEU / C0的行。 在以下行中找到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的所有这些行吗?
答案 0 :(得分:0)
看起来你的代码几乎可以工作,除了你引用字符串和进行比较的方式。怎么样?
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()
检查该行是否以正确的子字符串开头。当您使用==
或!=
时,它们会检查字符串是否完全相同。但您只想检查该行是否以特定字符串开头。