VBA для преобразования нескольких текстовых файлов Unicode в обычный CSV.Эти текстовые файлы имеют расширение CSV - PullRequest
0 голосов
/ 28 ноября 2018

Я часами пробую код, размещенный здесь на SO.Они успешно открывают файлы, но когда они сохраняются, они все еще находятся в текстовом формате Unicode, и Python pandas csv_reader не будет их читать.Вот моя последняя и самая большая попытка.Мои файлы находятся в подпапке "QCfiles":

Sub LoopExample()

Dim MyFolder As String, MyFile As String

With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Show
    MyFolder = .SelectedItems(1)
    Err.Clear
End With

Application.ScreenUpdating = False

MyFile = Dir(MyFolder & "\", vbReadOnly)

Do While MyFile <> ""
    Workbooks.Open FileName:=MyFolder & "\" & MyFile, UpdateLinks:=False
    MsgBox Cells(1, 1)
    ActiveWorkbook.SaveAs FileName:=MyFile, FileFormat:=xlCSV
    Workbooks(MyFile).Close savechanges:=True
    MyFile = Dir
Loop

Application.ScreenUpdating = True

End Sub

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

'Это работает в R'.Я вернусь к Python / Pandas для дальнейшей работы.R отлично подходит для чтения грязных данных. Библиотека *

install.packages ('data.table') (data.table)

fileNames <- Sys.glob ("C: / Users / fkean"/TOS_csv/QCfiles/<em>.")

для (f в fileNames) {

sample <- read_csv (f, skip = 2) write_csv (sample, f,append = FALSE) </p>

}

0 голосов
/ 28 ноября 2018

Прежде чем изменять CSV (через VBA), попробуйте передать аргумент параметру encoding pandas.read_csv().

Насколько я понимаю, encoding по умолчанию соответствует настройкам вашей системы (что можетбыть 'cp1252', если ваши региональные настройки - это какой-то вариант английского языка.

Чтобы переопределить это неявное поведение, вы можете попробовать передать encoding='utf-8' (или вместо этого может потребоваться encoding='utf-8-bom'), что должно затем разрешить pandas для декодирования / работы с символами Unicode.

Допустим, вы импортировали pandas в пространство имен pd и ваш файл находится на C:\some_folder\ok.csv (в Windows):

import pandas as pd

df = pd.read_csv('C:\\some_folder\\ok.csv', encoding='utf-8')

print(df.head())

На мой взгляд, стоит попробовать, так как это может быть быстрое исправление.

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

Кроме того, вы можете потерять информацию / байты при принудительном принудительном приведении Unicode к ASCII, в зависимости от того, есть ли какие-либо не-ASCII символы.)

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