Как получить и записать определенные элементы из списка в файл в Python - PullRequest
0 голосов
/ 05 июля 2019

ОБНОВЛЕНИЕ
Итак, я добавил strip() к list1.Я включаю обновленные результаты.
обновленный выходной файл
location?bobThings things thingyes, bob, thing, sara, more, location, ?
Да, все это возвращается в одной строке.Он пропустил yes в поиске, и теперь это все одна строка, разбитая вместе. Как мне получить его, чтобы он возвращался с пробелами, как раньше, и с новой строкой для каждого положительного результата?

Итак, я новичок в Python и все еще учусь.Я пишу программу, которая позволит пользователю вводить ключевые слова и искать во входном файле эти ключевые слова, а затем сохранять результаты в выходной файл.

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

Итак, входной файл говорит:
Журнал временных чатов
возраст
пол
местоположение
?
пол
возраст
номер телефона
слова
боб
вещи вещи вещь
09/03/2018

поиск по ключевым словам - это (ввод пользователя): да, боб,вещь, Сара, больше, местоположение,?

Выходной файл только получает этот возврат:
Вещи, вещи, вещи

Я попытался удалить '\ n', Я попытался сохранить в новый файл на случай, если что-то не так с исходным, который я перезаписываю, я пробовал re.search и re.replace, я пытался создать функцию, но это самое близкоеЯ получил программу для этой части.Проблема, я думаю, связана с последним разделом кода, но я предоставляю код для всех частей, использованных в этом последнем разделе.В последнем разделе есть дополнительные строки для печати, потому что я пытался увидеть, что происходило с кодом, когда он проходил через этот раздел программы.

# Ask user for the path to the text file they would like to use
print ("Please provide a valid path to the chat log text (.txt) file. Example: C:\ Users \ USERNAME \ Documents")

# Save the path from the user input
path1 = input ()

# Checking the user input for the .txt file extension
if os.path.splitext(path1)[1] != ".txt":
    print (path1 + " is an unknown file format. Please provide a .txt file.")
    path1 = input()
else:
    print ("Thank you for providing a text file.")

# Using a while loop to ensure this is a valid path
while not os.path.isfile(path1):
    print ("Please provide a valid path to the chat log text (.txt) file.")
    path1 = input ()
print ("File was successfully retrieved.")

# Ask user for needed keywords or symbols
user_keywords = input("What keywords or special symbols would you like to search the provided file for?\n"
                      "Please separate each entry with a comma.\nIf you would like to just search for question marks,"
                      " please just type n.\n")
# Holding list, using comma as a way to separate the given words and symbols
list1 = [s.strip().lower() for s in user_keywords.split(',')]
# Print list for user to see
print("You have entered the following keywords and/or special symbols: ", list1)

# Opens a new file for saving the results to.
print("Please list the path you would like the new file to save to. Example: C:\ Users \ NAME \Desktop\File name.")
outFileName = input()

# Opens the file under review.
with open(path1,'r') as f, open(outFileName, 'w') as w:
    f = f.readlines()
    f[:] = [f.rstrip('\n') for f in f]

    for line in f:
        if any(s in line.lower() for s in list1):
            print(f)
            print(list1)
            print(line)
            w.write(line)
w.close()

Нет сообщений об ошибках.
Ожидаемый результат См. Обновление выше
Новый файл с указанным путем к выходному файлу, с указанием строк положительного результата.Так что в этом случае файл должен иметь эти строки.Боб Вещи вещи вещь вещь местоположение?

Текущий выход См. обновление выше
Единственный положительный результат, который происходит, это: Вещи вещь вещь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...