На самом деле я пишу скрипт для удаления дубликатов в CSV-файле из 12 000 строк. Я знаю, что в этом файле есть дубликаты идентификатора пользователя И / ИЛИ номера_карты, его формат:
userid, fistname, lastname, card_number
=======================================
1234, toto, help, 111111
1234, toto, help, 111111
И
1234, toto, help, 111111
5678, user, user2, 111111
Я хотел бы прочитать строки по одной и добавить их в объект словаря, если они уже есть, затем записать в другом файле оставшиеся строки и экспортировать словарь в файл журнала.
Работают закодированные функции для создания / открытия / записи / сохранения файлов с использованием объектов fso.
Я не могу вернуться к словарному методу, который, кажется, не работает.
Я понятия не имею, как экспортировать свой словарь, или, может быть, это только из-за того, что словарь не работает.
Я провел много исследований по stackoverflow, ssh64 или обмену экспертами, чтобы найти решения, но я заблокирован, я полагаю, что я почти там со своим сценарием, но любая помощь будет очень признательна.
```
`
`This is the dictionary part to record duplicates
`in a file and remove them from the destination file
`
```
`
`# Declares required variables
Dim objFSO, objFolder, objShell, objTextFile, objFile
Dim strDirectory, CurDir, InputFile, OutputFile
Dim strInput, strFile
Dim dictionary, it
`# Here we go !
Set objFSO = Createobject("Scripting.FileSystemobject")
Set OutputFile = objFSO.CreateTextFile(CurDir & ".\myCSVfile.csv", 2, true)
Set objFile = objFSO.OpenTextFile(CurDir & InputFile, 1)
`# Reads the file until the end
Do Until objFile.AtEndOfStream
strInput = objFile.ReadLine()
strInput = Trim(strInput)
If Len(strInput) > 0 Then
'WScript.Echo strInput
'OutputLog.Writeline strInput
'Quit
End If
`# Test if it already exists, if YES, it's a duplicate
If Not dictionary.exists(strInput) Then
OutputFile.Writeline strInput
Else
dictionary.add strInput, null
If dictionary.Count >= 0 Then
objTextFile.Write dictionary.items
Else
objTextFile.Write "There are " & dictionary.Count & " duplicated data in the file."
End If
End if
Loop
`# Populate the log file with the duplicated entries
For Each it In dictionary
.Item = it & "" & dictionary(it)
objTextFile.Writeline .Item
Next
Ожидаемые результаты:
- словарь, который будет заполнен дубликатами
- файл журнала для записи с дубликатами
- дубликаты, которые будут удалены из окончательного файла
Фактические результаты:
- открыть входной файл
- прочитать входной файл
- создать выходной файл
- написать выходной файл
- открыть файл журнала
- напишите файл журнала