【发布时间】:2019-11-23 09:13:57
【问题描述】:
我有 test.txt 文件,从词表中查找字符串和子串
<aardwolf>
<Aargau>
<Aaronic>
<aac>
<akac>
<abaca>
<abactinal>
<abacus>
test.py 文件
import sys # the sys module
import os
import re
def hasattr(str,list):
expr = re.compile(str)
# yield the elements
return [elem for elem in list if expr.match(elem)]
isword = {}
FH = open(sys.argv[1],'r',encoding="ISO-8859-1")
for strLine in FH.readlines(): isword.setdefault(''.join(sorted(strLine[1:strLine.find('>')].upper())),[]).append(strLine[:-1])
print (isword)
basestring=str()
for ARGV in sys.argv[2:]:
print ("\n*** %s\n" %ARGV )#print Argv
diffpatletters = re.compile(u'[a-zA-Z]').findall(ARGV.upper())
#print (diffpatletters)
diffpat = '.*' + '(.*)'.join(sorted(diffpatletters)) + '.*'
#print (diffpat)
for KEY in hasattr(diffpat,isword.keys()):
# print (KEY)
SUBKEY = KEY
for X in diffpatletters:
#print (X)
SUBKEY1 = SUBKEY.replace(X,'')
#print (SUBKEY)
if SUBKEY1 in isword:
#print (SUBKEY)
basestring+= "%s -> %s" %(isword[KEY], isword[SUBKEY1])
print (basestring + "\n")
下面是在命令行中运行文件
python test.py test.txt aack aadfl
预期是在第二个参数之后找到匹配的字符串和子字符串。My basestring not printing
【问题讨论】:
-
您可以将逻辑的第一个答案带到基本字符串中,它将打印出来。
标签: python dictionary