2014-10-16 2 views
-6
def noalpha(s): 

    noa = '' 
    for c in s: 
     if not (c in noa or c.isalpha()): 
      noa += c 
    return noa 

def flines(t, ww): 

    s=noalpha(t) 
    lines=t.lower().splitlines() 
    lst=[] 
    for i in range(len(lines)): 
     for caratteri in s: 
      lines[i]=lines[i].replace(caratteri, ' ') 
     wrdst=lines[i].split() 
     l= 'Line ' +str(i)+': ' 
     False 
     for k in ww: 
      k=k.lower() 
      num=wrdst.count(k) 

      if num>0: 
       l+='"'+ str(k) + '"=' + str(num)+' ' 
       True 
     if True: 
      lst+=[l] 


    return lst 

Может кто-нибудь объяснить мне, как я могу изменить вывод так, чтобы пустые строки не отображались? выход я получаю после запуска программы является:Как изменить выход

['Line 0: "to"=1 ', 'Line 1: "the"=1 ', 'Line 2: "the"=1 ', 'Line 3: "to"=1 ', 'Line 4: "so"=2 ', 'Line 5: ', 'Line 6: ', 'Line 7: "to"=1 "the"=1 ', 'Line 8: "to"=1 "the"=2 ', 'Line 9: ', 'Line 10: ', 'Line 11: "to"=1 "the"=1 ', 'Line 12: ', 'Line 13: ', 'Line 14: "so"=1 ', 'Line 15: "to"=1 ', 'Line 16: ', 'Line 17: ', 'Line 18: "to"=1 "the"=2 ', 'Line 19: "the"=1 ', 'Line 20: "the"=4 ', 'Line 21: ', 'Line 22: ', 'Line 23: ', 'Line 24: ', 'Line 25: ', 'Line 26: ', 'Line 27: "the"=1 ', 'Line 28: ', 'Line 29: ', 'Line 30: "the"=1 ', 'Line 31: '] 
+0

Erm, почему существует «ложь» и «правда», просто стоящие там из ниоткуда? –

+0

, так что он заполняет список только тем, что петли верны. – ProdigySR

+0

В этом коде работает только он выводит строки, где нет слов параметра ww – ProdigySR

ответ

0

Хотя этот код не очень, чтобы сделать то, что вы как раз хотите сделать вам необходимо изменить эти строки

if num>0: 
    l+='"'+ str(k) + '"=' + str(num)+' ' 
    True 
if True: 
    lst+=[l] 

Если вы измените его что-то вроде

if num>0: 
    l+='"'+ str(k) + '"=' + str(num)+' ' 
    flag = True 
if flag: 
    lst+=[l] 

, а затем, если вы переинициализировать флаг = False в начале для цикла он должен производить результаты, которые вы хотите. сделав «Истина», которую вы говорите, всегда добавляйте в список, если есть что-то там.

+0

ДА Это прекрасно работает, вы могли бы объяснить, почему вы должны атрибутировать true и false переменной? Другая незначительная проблема в моем выходе заключается в том, что она печатает ее по разным строкам: ['Line 0: "to" = 1 ", ' Строка 1:" = 1 ', ' Строка 2: "the" = 1 ', ' Линия 3: "до" = 1 ', ' Строка 4: "so" = 2 ', ' Линия 7: "до" = 1 "" = 1 ", 'Линия 8:" на "= 1" the "= 2", 'Линия 11: "до" = 1 "= 1", ' Строка 14: "so" = 1 ', ' Строка 15: "to" = 1 ' , «Линия 18:« до »= 1» «2», «Линия 19:« = 1 », « Линия 20: «« = 4 », « Линия 27: = 1 ', ' Строка 30: "the = = 1 '] – ProdigySR

+0

Итак, True всегда будет оценивать true. Я отредактировал свой ответ, чтобы отразить это.Не зная, что вы имеете в виду, мои печатные издания на разных строках, пожалуйста, уточните – user2097159

+0

ладно, спасибо, и я никогда не думал, что проблема – ProdigySR