我有一个随机字母的文件,我将此文件转换为二维列表,我需要一个函数来搜索列表中的任何单词并创建一个元组,其中包含该单词的行号,列号和方向。
word="THIS"
file = open("harf_uzayi.txt", "r")
letter_space=[[str(n) for n in line] for line in file]
for letter in word:
for j,sublist in enumerate(letter_space):
if letter in sublist:
这部分之后我很困惑。你能帮助我吗?
顺便说一下,文件示例是:
IRUZHZKYGUHGCPPJGSTTNUBUYSFUBKKURMGRGPOGVCVPNFICOS
GKRHUYFGNZPGDTFBGSMCUUAJSELULLIUGRATBYYAOEIMJNSMGU
FHDLCFUKOKUNCYDVNLGIIFUMGVMRDINKOYTFDEOGPPVOEDUAGY
IFKZGBDCVTNCUCCETOATSUYUSYUGHLBJOHPOOBOLEPSPMTGBCB
TAEPRGNUOIUBSKBGFCSHZDUVLCIBMFGYKLVMYSZDSMPPAGIDVO
DKZKOMRUİCİGFYTCTPRISPLJILYSGGYYGSBFNPUJCFUCMGMYCF
LAERLKPEIDAPIYFKGCISERRGZPBCKCNBGMCGCVVDGBAFBUVSUG
IOJVKBSCGVNOHCEOGVOPORVEHILOVOIMSBODSISSLASONREUSA
GNEITNCTAJSBMGMGNJTEBUCGAGAGULTBKOJNOZIODLMOIBRTMC
HBETZJUCGRKSZPHVONOSCIOPOOYAUMJOICSYPYSDUOUCRIEKSO
TABUSHSPMAHKBBOIGUDRZLHMUPUGGÜKKIOCTIZNSGZCEÇIOGEC
DUSUINNNCKFUCNOJGNEOCCSGAIMIUEOIEFBUBETOCOODOLUETT
样本输出:
WORD line number column number direction
THIS 4 20 West
您可以使用regex
的命名捕获组 (?P<name> )
和交替运算符 |
。
import re
with open("text.txt") as txt:
words = "|".join(["SYUB", "TAJ", "THIS", "EDOT"])
# lines is a matrix
lines = txt.readlines()
pattern = re.compile(f"(?P<e>{words})|(?P<w>{words[::-1]})")
for i, line in enumerate(lines):
for word in pattern.finditer(line):
print(word.group(0), i, word.span()[0], word.lastgroup)
# transpose lines and search again
lines = [''.join(i) for i in zip(*lines)]
pattern = re.compile(f"(?P<s>{words})|(?P<n>{words[::-1]})")
for i, line in enumerate(lines):
for word in pattern.finditer(line):
print(word.group(0), word.span()[0], i , word.lastgroup)
输出:
BUYS 0 22 w
TAJ 8 7 e
TODE 8 18 n
THIS 3 19 s
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句