在python中删除空引号和模式之前

时间:2019-03-22 17:52:23

标签: python

我有一个如下文件,每当有一个带有空值的键时,我想删除该键和空引号

我的文件

<items="20" product="abc" condition="new">
<items="10" product="" condition="new">
<items="50" product="xyz" condition="">
<items="" product="mno" condition="fair">

所需的输出

<items="20" product="abc" condition="new">
<items="10" condition="new">
<items="50" product="xyz">
<product="mno" condition="fair">

我尝试过这样的操作,这只删除了引号。我想删除引号和“ =”

之前的值
f= open('test.txt','r') 
A1=f.read()

for i in A1:
    if i=="''":
        A1.remove(i)
    print A1
    break

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

import re

with open('test.txt','r') as A1:
   for i in A1:
       print(re.sub('[a-z-]+=\"\" *', '', i))


答案 1 :(得分:0)

可能的解决方案可能是:

with open('test.txt','r+') as f:
     for line in f:
          Line=line[1:len(line)-1]
          L=Line.split()

          for k in L: 
               if("" not in k):
                     f.write(k)
               f.write(" ")


答案 2 :(得分:0)

您可以编写一个函数以使行通过:

with open('in_file', 'r') as f:
    lines = f.readlines()

def process_line(line):
    line = line.split('<')[1].rsplit('>')[0]
    valids = [val for val in line.split(' ') if '""' not in val]
    line = '<{}>\n'.format(' '.join(valids))
    return line

with open('out_file', 'w') as f:
    for line in lines:
        f.write(process_line(line))

答案 3 :(得分:0)

您可以使用正则表达式,

with open('tmp.txt', 'r') as f_in:
        with open('tmp_clean.txt', 'w') as f_outfile:
            f_out = csv.writer(f_outfile)
            for line in f_in:
                line = line.strip()
                row = []
                if bool(re.search('(.*="")', line)):
                    line = re.sub('[a-z]+=\"\"', '',line)
                    row.append(line)
                else:
                    row.append(line)
                f_out.writerow(row)