Добавить следующее слово в список из текстового файла в Python и напечатать его по столбцу - PullRequest
0 голосов
/ 06 декабря 2018
number=[]
name=[]
null=[]
fh = open("foo.txt","r")
for line in fh:
 words=line.split()
 for word in words:
    if(word=="number"):
        number.append(word+1)
        print(word)
        word=word+2
    if(word=="name"):
        name.append(word+1)
        word=word+2
    else:
        null.append(word+1)
        word=word+2
print("number " " instances " " name " " instances " " null " " instances ")
print(number, len(number), name, len(name), null, len(null) )
fh.close()

Это мой минимальный код на Python.Моя цель здесь состоит в том, чтобы напечатать столбцы функций (например, имя) и количество экземпляров этого.Мой тестовый файл (foo.txt) имеет следующий порядок

name Mathew
null has
number 4
null dogs
null and
null a 
null cat

Я знаю, что мой код неверен.Особенно во время оператора добавления и оператора приращения.Мой вопрос: а.Какое было бы правильное утверждение?б.Что бы я сделал, чтобы получить вывод coulmnwise, особенно если есть очень большое количество слов, другими словами, могу ли я обернуть в столбец?

Ожидаемый результат

number instances      name     instances     null         instances
  4        1         Mathew        1       has, dogs,         5
                                           and, a, cat

Абсолютныйначинающий здесь.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Это работает, и я использовал в основном ваш код, чтобы вам было легко понять, как улучшить:

name=[]
null=[]
number=[]
fh = open("foo.txt","r")
for line in fh:
    word= line.split()[0]
    if word == "name":
        name.append(line.rstrip('\n').split()[1])
    elif word =="number":
        number.append(line.rstrip('\n').split("number")[1])
    else:
        null.append(line.rstrip('\n').split("null")[1])

print("number " " instances " " name " " instances " " null " " instances ")
print(" ".join(str(x) for x in number), len(number), " ".join(str(x) for x in name), len(name), " ".join(str(x) for x in null), len(null) )
0 голосов
/ 06 декабря 2018

а.Строковый метод «split» - возвращает список значений, поэтому в переменной «words» будет список слов из текущей строки файла.Когда вы выполняете итерацию в «словах» - вы выполняете итерации по каждому слову в текущей строке, поэтому оно вам не нужно.

 for line in fh:
    words=line.split()
    if (words[0] == "number"):
        number.append(int(words[1]))
        print(words[1])
    if (words[0] == "name"):
        name.append(words[1])
    else:
        null.append(words[1])

, если имя может содержать несколько слов, вы можете использовать:

name.append(" ".join(words[1:]))

если вам не нужно отделять «нулевые» значения и «числа» от файла - вы можете использовать:

elif (words[0] == "name"):

b.Если вы печатаете вывод по столбцам, вы можете использовать строковый метод 'format':

print("numbers: {:>20}, instances: {:>20}".format(str(number), len(number)))
print("name:    {:>20}, instances: {:>20}".format(str(name), len(name)))
print("null:    {:>20}, instances: {:>20}".format(str(null), len(null)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...