изменение расположения предложений в текстовом файле на Python - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в Python и у меня есть текстовый файл "in_file.txt" с предложениями

in_file = ['sentence one',
           'sentence two', 
           'sentence has the word bad one', 
           'sentence four', 
           'sentence five', 
           'sentence six', 
           'sentence seven', 
           'sentence has the word bad two', 
           'sentence nine']

Среди них есть предложения со словом "плохо" в них ровно один раз.Я хочу взять вышеупомянутые 5 предложений любой строки со словом «плохо» и сделать из них абзац следующим образом (за исключением начала, где может не быть 5 предложений):

out_file = ['sentence one sentence two',
            'sentence has the word bad sentence four sentence five sentence six sentence seven']

Затем сохраните его в файле "out_file.txt".Спасибо за помощь и, пожалуйста, дайте мне знать, если я не предоставил достаточно объяснений.Обратите внимание, что, возможно, все предложения во входном файле не соответствуют окончательному выбору в выходном файле.Меня интересуют только те предложения, которые находятся выше и в пределах 5 предложений другого предложения со словом «плохо».

Просто отправная точка:

with open("in_file.txt", "r") as lines:
    for line in lines
    # maybe there is an index counter here!
    for word in line
    if word = bad
    # then take the above 5 lines
    # add to the out_file
    # return out_file

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

IUCC Ниже приведен код, который должен работать для вас

with open("in_file.txt", "r") as f:
    l = f.readlines()
# l = ['sentence one',
#     'sentence two',
#      'sentence has the word bad one',
#      'sentence four',
#      'sentence five',
#      'sentence six',
#      'sentence seven',
#      'sentence has the word bad two',
#      'sentence nine']
final_para=[]
previous_index=0
for index,value in enumerate(l):
    if "bad" in value:
        final_para.append(' '.join(l[previous_index:min(index,previous_index+5)]))
        previous_index=index

print(final_para)#['sentence one sentence two', 'sentence has the word bad one sentence four sentence five sentence six sentence seven']

with open('out_file.txt', 'w') as f:
    for item in final_para:
        f.write("%s\n" % item)
0 голосов
/ 08 октября 2018
with open("in_file.txt", "r") as f:
    l = f.readlines()

# where l is 

l = ['sentence has the word bad one',
         'sentence four',
         'sentence five',
         'sentence six',
         'sentence seven',
         'sentence has the word bad two',
         'sentence nine']

# sentences with "bad"
" ".join(filter( lambda x: x.find("bad") > -1, l))
## -> 'sentence has the word bad one sentence has the word bad two'

# sentences without "bad"
" ".join(filter( lambda x: x.find("bad") == -1, l))
## -> 'sentence four sentence five sentence six sentence seven sentence nine'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...