我有一个函数可以从一串文本生成一个列表列表。我希望它能找到一个词,即" noir"在列表列表中,无论是按行还是按列,并将该单词的坐标返回为:
row_start
是该单词第一个字母的行号。column_start
是该单词第一个字母的列号。row_end
是该字词最后一个字母的行号。column_end
是单词最后一个字母的行号。 到目前为止,这是我的代码;
def checkio(text, word):
rows = []
col = []
coordinates = []
word = word.lower()
text = text.lower()
text = text.replace(" ", "")
text = text.split("\n")
for item in text:
rows.append([item]) #Creates a list of lists by appending each item in brackets to list.
上述函数的示例输出:
[['hetookhisvorpalswordinhand:'],
['longtimethemanxomefoehesought--'],
['sorestedhebythetumtumtree,'],
['andstoodawhilei**n**thought.'],
['andasinuffishth**o**ughthestood,'],
['thejabberwock,w**i**theyesofflame,'],
['camewhifflingth**r**oughthetulgeywood,'],
['andburbledasitcame!']]
在上述情况下,其中" noir"的坐标将是[4,16,7,16]。 行开始是第4行 列开始是第16列 行结束是第7行 列末尾是第16列
这个词可以水平和垂直找到,这个词不可逆转
答案 0 :(得分:0)
不完全漂亮,但回答问题.. :-)我冒昧地将这个字符串列表。这必须先在代码中完成。
words = [
'hetookhisvorpalswordinhand:',
'longtimethemanxomefoehesought--',
'sorestedhebythetumtumtree,',
'andstoodawhileinthought.',
'andasinuffishthoughthestood,',
'thejabberwock,witheyesofflame,',
'camewhifflingthroughthetulgeywood,',
'andburbledasitcame!'
]
word = 'noir'
print [[row+1, line.find(word)+1, row+1, line.find(word)+len(word), line] for row, line in enumerate(words) if line.find( word ) >= 0]
words_transp = [''.join(t) for t in zip(*words)]
print [[line.find(word)+1, col+1, line.find(word)+len(word), col+1, line] for col, line in enumerate( words_transp ) if line.find( word ) >= 0]
输出是:
[[4, 16, 7, 16, 'sotnoira']]
注意,没有很多错误检查。 OP的练习。 : - )
顺便说一句,顺便提一下,你必须小心计数,因为python从0开始,因此那里的“+1”。