2017-03-26 1 views
2

나는 내가 읽고 읽는 파일을 가지고있다.바로 뒤에 빈 줄이있는 줄을 삭제하는 방법은 무엇입니까?

export_comp_f = open(env_path + '/girobo2/sim_export/modelsim/compile.do', 'r') 
exp_cont = export_comp_f.readlines() 
exp_cont = list(filter(lambda x: 'work/hdl' not in x, exp_cont)) 
exp_cont = list(map(lambda x: re.sub(r"^\".*?(\/2016\.2)", r'"$vivado_path/2016.2', x), exp_cont)) 
exp_cont = list(map(lambda x: re.sub(r"\+.*?(\/girobo2)", r'+incdir+$env_path/girobo2', x), exp_cont)) 
exp_cont = list(map(lambda x: re.sub(r"\"\w\:.*?(\/girobo2)", r'"$env_path/girobo2', x), exp_cont)) 
exp_cont = exp_cont[:-5] 
exp_cont.append('vlog -work xil_defaultlib "glbl.v"\n') 
export_comp_f.close() 

"vcom"으로 시작하고 그 뒤에 빈 줄이있는 모든 줄을 삭제하고 싶습니다. 예를 들어

이 같은

**vcom -work lib_pkg_v1_0_2 -64 -93 \** //should be deleted 


vcom -work lib_fifo_v1_0_5 -64 -93 \ 
"$env_path/girobo2/syn/syn.ip_user_files/ipstatic/lib_fifo_v1_0/hdl/src/vhdl/async_fifo_fg.vhd" \ 
"$env_path/girobo2/syn/syn.ip_user_files/ipstatic/lib_fifo_v1_0/hdl/src/vhdl/sync_fifo_fg.vhd" \ 

답변

0

아마 뭔가? 원래 line을 수정하려는 경우

line = ['vcom -work lib_pkg_v1_0_2 -64 -93 \ //should be deleted', 
'', 
'', 
'vcom -work lib_fifo_v1_0_5 -64 -93 ', 
'"$env_path/girobo2/syn/syn.ip_user_files/ipstatic/lib_fifo_v1_0/hdl/src/vhdl/async_fifo_fg.vhd" ', 
'"$env_path/girobo2/syn/syn.ip_user_files/ipstatic/lib_fifo_v1_0/hdl/src/vhdl/sync_fifo_fg.vhd" '] 

output = [] 
for i in range(len(line) - 1): 
    if line[i][:4] == "vcom" and line[i + 1].strip() == "": 
     pass 
    else: 
     output.append(line[i]) 

print(output) 

는 코드가 짧아집니다.

for i in range(len(line) - 1): 
    if line[i][:4] == "vcom" and line[i + 1].strip() == "": 
     line[i] = None 

line = [item for item in line if item is not None] 
print(line) 
+0

다른 목록을 만들지 않고 원본 목록에서 vcom 행을 삭제하는 것을 선호합니다. –

+0

원래 줄을 수정하려면 코드가 짧아집니다. 편집 된 답변을 확인하십시오. –

+0

대신'line [i] = None' 그냥'del line [i]' –

관련 문제