簡體   English   中英

如何使用字典中的鍵搜索字符串?

[英]How to use keys from a dictionary to search for strings?

我正在編寫一個編輯文本文件的程序。 我打算讓程序查找重復的字符串並刪除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]

編輯

另外,有人可以解釋為什么代碼的最后部分不返回任何內容嗎?

這是不使用正則表達式,使用字典的內容(因此行是無序的,可能沒關系...):

#!/usr/bin/env python

import os
res = {}
with open("input.txt") as f:
    for line in f.readlines():
        line = line.strip()
        key = line.split('[')[0].replace('-','').replace('=', '')
        if key in res:
            continue
        res[key] = line
        # res[key] = line.replace('&', '').strip()
print os.linesep.join(res.values())

這並不能消除尾隨的“&”號。 如果您想擺脫它,請取消注釋:

res[key] = line.replace('&', '').strip()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM