列表列表中隐藏的单词Python

时间:2014-06-19 18:16:07

标签: python list

我有一个函数可以从一串文本生成一个列表列表。我希望它能找到一个词,即" 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列

这个词可以水平和垂直找到,这个词不可逆转

1 个答案:

答案 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”。