Сортирует строки в алфавитном порядке в формате CSV TXT или любой другой файл - PullRequest
1 голос
/ 08 июня 2019

Мне нужно написать программу, которая запрашивает у пользователя имя файла, загружает данные построчно, удаляет дубликаты строк, сортирует строки по алфавиту и записывает оставшиеся строки в другой файл.

Я закончил с большей частью кода, но я пытаюсь отсортировать строки в алфавитном порядке. Любое предложение?

Заранее благодарю за помощь!

def deleteDuplicateRecords(fileName):
    try:
        newFileName="filtered_"+fileName
        with open(fileName,'r') as readFile, open(newFileName,'w') as writeFile:
            lineSet = set()
            for line in readFile:
                if line not in lineSet: 
                    lineSet.add(line)
                    writeFile.write(line)
        readFile.close()
        writeFile.close()
        print(f"Duplicate rows removed succesfully. Open the new file '{newFileName}'")
    except FileNotFoundError:
        print("File Not Found")

name = input("Enter the name of the text file including the proper extension (.txt, .csv, etc): ")
print()

deleteDuplicateRecords(name)

Ответы [ 3 ]

1 голос
/ 08 июня 2019

Это должно работать:

def deleteDuplicateRecords(fileName):
    try:
        newFileName="filtered_"+fileName
        with open(fileName,'r') as readFile, open(newFileName,'w') as writeFile:
            for sorted_line in sorted({line for line in readFile}):
                writeFile.write(sorted_line)
        print(f"Duplicate rows removed successfully. Open the new file '{newFileName}'")
    except FileNotFoundError:
        print("File Not Found")

Некоторые примечания:

  1. Как уже упоминалось другими, если вы используете with, это автоматически закрывает файлы, когда область действиязакончено.
  2. Если вы используете набор, дублирующийся элемент не будет добавлен в список, поэтому нет причин проверять, существует ли этот элемент в списке
  3. Если у вас есть итерация(список, набор и т. д.), вы можете просто использовать функцию sorted для сортировки результатов
  4. Строка {line for line in readFile} использует понимание набора для создания набора из строкфайл в более сжатой форме.
0 голосов
/ 08 июня 2019

Вы можете прочитать эту Документацию для всех отсортированных методов. https://docs.python.org/3/howto/sorting.html после этого возврата сортируется на ваш вывод.

0 голосов
/ 08 июня 2019
  1. Накапливай линии в наборе
  2. Сортировать набор с помощью sorted, который возвращает список
  3. Затем записать строки в выходной файл

Кстати, использование оператора with означает, что вам не нужно закрывать файлы вручную.

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