excel - VBA 将多个 Unicode 文本文件转换为常规 csv。这些文本文件具有 csv 扩展名
问题描述
我有几个小时尝试在 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
解决方案
在修改 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 字符。)
推荐阅读
- angular - 模态问题中的角通信父/子
- python - 关于尝试打印给定列表的所有排列的问题
- r - 对于 R 中另一个变量的每个案例,一个变量的值较高的用例
- sql - 使用 PowerShell 获取 SQL 作业计划的值
- javascript - javascript中的数学到svg坐标转换
- sql - sql查询根据特定列条件查找作业和等级
- javascript - 使用图表显示过去 12 个月的注册用户分析
- javascript - 我想在每次单击退格键时删除一个字母
- javascript - 我可以将克隆的元素保存到 localStorage 吗?
- python - 将 HoverBehavior 添加到现有的 kivy 代码