импортировать текстовый файл слов и печатать слова в отдельных строках - PullRequest
0 голосов
/ 30 января 2019

У меня есть текстовый файл, который содержит 40 слов, например, one two three ... forty.Все слова ниже друг друга , без запятых.Мне нужно распечатать их на экране или в другом файле, расположенном рядом друг с другом, разделенных запятыми (например: one, two, three, ...), а также сделать так, чтобы они были заключены в каждые десять (10) или семь (7) слов.Это мой код, который не работает:

import textwrap
flag = 1
comma = ', '

with open('drop_words.txt', encoding='utf-8') as file:
    content = file.read()
    content = content.split()
    words = comma.join(content)
    if len(content)%7 == 0:
        print(words, '\n')

Может кто-нибудь помочь?Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

это может помочь распечатать имена:

with open('drop_words.txt', encoding='utf-8') as f:
    words = [line for line.strip() in f]
    print(','.join(words))

Если вы хотите обернуть их в пакет из 7 слов, вы можете использовать следующую функцию:

def grouped(iterable, n):
    return zip(*[iter(iterable)]*n)

>>> grouped(word, 7)
0 голосов
/ 30 января 2019

drop_words.txt:

one
two
three
four

, а затем:

with open('drop_words.txt', encoding='utf-8') as file:
    content = file.readlines()
    # you may also want to remove empty lines
    content = [l.strip() for l in content if l.strip()]
    print(", ".join(content), end = '')

ВЫХОД:

one, two, three, four

РЕДАКТИРОВАТЬ:

, и если обернуть слова вместе, вы имеете в виду группирование их , вы можете использовать группировщик , например:

import itertools as IT

def grouper(n, iterable):
    iterable = iter(iterable)
    return iter(lambda: list(IT.islice(iterable, n)), [])

with open('list.txt', encoding='utf-8') as file:
    content = file.readlines()
    content = [l.strip() for l in content if l.strip()]
    print(", ".join(content))
    grouping = ", ".join(content)
    #creating a list out of the comma separated string
    grouping = grouping.split(",")
    # grouping the two elements
    print(list(grouper(2, list(grouping))))

ВЫХОД:

one, two, three, four
[['one', ' two'], [' three', ' four']]

РЕДАКТИРОВАТЬ 2:

ОП упомянул пакет из 10 цифр подряд

wrap = 0
newLine = True
with open('list.txt', encoding='utf-8') as file:
    content = file.readlines()
    # you may also want to remove empty lines
    content = [l.strip() for l in content if l.strip()]
    for line in content:
        if wrap < 10:
            print("{}, " .format(line), end = '')
        else:
            if newLine:
                print("\n")
                newLine = not newLine
            print("{}, ".format(line), end='')
        wrap += 1

ВЫХОД:

one, two, three, four, five, six, seven, eight, nine, ten, 

eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, 
...