使用Python做NLP任务的时候,经常会清洗数据,做成txt文件,每一行代表一篇文章。但是,采用pd.read_csv(‘新华社数据.csv’, encoding = ‘GB2312’, error_bad_lines=False) 这种方法会出现报错,无法识别位置XXX处的字符。而csv文件是可以用Excel打开的,作为备选,可以从Excel中提取文本。VBA代码如下:
Sub zhuantxt()
Dim gpath, ss As String
Dim sfile As Object, Fso As Object
gpath = "D:\ML" '先定义一个保存路径
Set Fso = CreateObject("Scripting.FileSystemObject")
Set sfile = Fso.CreateTextFile(gpath & "\xinhua.txt", True, True)
'注意这里的两个Ture
'第一个true表示可以覆盖,改成false表示不能覆盖。
'第二个true表示unicode,省略true就是ANSI。
'这里的unicode具体是utf-16
For i = 2 To 8
ss = Cells(i, 4)
If InStr(1, ss, Chr(10), vbBinaryCompare) > 0 Then
ss = Application.WorksheetFunction.Clean(ss)
End If
'这个If代码块的作用是去除非打印字符,比如空格,换行等。
ss = Replace(ss, "新华社", "") '删掉文本中的“新华社”三个字
sfile.WriteLine (ss) '把变量作为一行写入txt文件
Next
sfile.Close
Set sfile = Nothing
Set Fso = Nothing
End Sub
用这种方法,Excel的文字只能转成ANSI或Unicode(utf-16),如果想要utf-8,可以在电脑中打开txt文件,选择另存为,选择编码方式为utf-8.