【发布时间】:2015-01-12 15:54:25
【问题描述】:
我正在编写一个编辑文本文件的程序。我打算让程序查找重复的字符串并删除 n - 1 行相似的字符串。
这是我目前的脚本:
import re
fname = raw_input("File name - ")
fhand = open(fname, "r+")
fhand.read()
counts = {}
pattern = re.compile(pattern)
# This searches the file for duplicate strings and inserts them into a dictionary with a counter
# as the value
for line in fhand:
for match in pattern.findall(line):
counts.setdefault(match, 0)
counts[match] += 1
pvar = {}
#This creates a new dictionary which contains all of the keys in the previous dictionary with
# count > 1
for match, count in counts.items():
if count > 1:
pvar[match] = count
fhand.close()
count = 0
# Here I am trying to delete n - 1 instances of each string that was a key in the previous
# dictionary
with open(fname, 'r+') as fhand:
for line in fhand:
for match, count in pvar.items():
if re.search(match, line) not in line:
continue
count += 1
else:
fhand.write(line)
print count
fhand.close()
我怎样才能使最后一点代码工作?是否可以使用字典中的键来识别相关行并删除 n-1 个实例? 还是我做错了?
编辑:来自文件的示例,这应该是一个列表,其中每个“XYZ”实例位于换行符上,前面有两个空白字符。格式有点乱,见谅 输入
-=XYZ[0:2] &
-=XYZ[0:2] &
-=XYZ[3:5] &
=XYZ[6:8] &
=XYZ[9:11] &
=XYZ[12:14] &
-=XYZ[15:17] &
=XYZ[18:20] &
=XYZ[21:23] &
输出
=XYZ[0:2]
编辑
另外,谁能解释一下为什么代码的最后一部分没有返回任何东西?
【问题讨论】:
-
你是什么意思 XYZ 实例?对不起,我真的不明白。我什至不“理解”输入文件。
-
我只想删除其中包含“XYZ”的行
-
但都包含 'XYZ' :o
-
好吧,我理解你的意思吗:如果你有一个输入:XZY newline X3 newline XYZ1 newline P --> 期望的输出:XYZ(第一个匹配仍然存在)newline X3 newline P 是吗?
-
是的,基本上就是这样
标签: python text dictionary editing