在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)| 真题+思路+代码