在python中删除空引号和模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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
答案

您可以使用正则表达式:

import re

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


另一答案

可能的解决方案可能是:

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(" ")


另一答案

你可以编写一个函数来传递直线:

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 = '<{}>
'.format(' '.join(valids))
    return line

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

你可以使用正则表达式,

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)

以上是关于在python中删除空引号和模式的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个带有 shebang #!/bin/sh 和 exec python 的片段在 4 个单引号内起作用?

华为OD机试 - 敏感字段加密(Python)| 真题+思路+代码

如何在单行代码中删除 python 3 中类列表中的 [ , ] 和单引号? [关闭]

从 HTML 片段中删除空标签对

防止 Proguard 删除片段的空构造函数

Python:如何从列表项中删除单引号