读取选项卡通过read.table将unicode数据分隔为R.

时间:2013-03-02 19:38:43

标签: r unicode read.table

我有几个文件从Sql-Server数据库导出为制表符分隔的unicode文本(数字数据和外来名称)。

如何将这些文件加载​​到R?

每个文件的第一个位置都有一个特殊字符。我认为这是BOM。

如果没有任何选项(超出headersep),read.table会将所有数据放入一列,即使使用正确的\t分隔符规范也是如此。

打开连接并跳过前三个字节会转到empty beginning of file

我已尝试了所有可用的fileEncoding值:我得到line 1 didn't have 29 elementsmore columns than column names

我真的很难过这个。理想情况下,我希望在R中处理所有内容,但欢迎使用任何awk / powershell建议来修复这些文件。这只是一个BOM问题吗?我无法做的一件事是控制从Sql-Server导出(我不拥有SSIS包)。感谢。

修改

对于那些有兴趣获取由SqlServer导出的csv中的数据列且unicode选项的人:SqlServer以NUL字符启动其csv导出。此链接讨论了如何实际查看'那些特殊字符:

Python CSV error: line contains NULL byte

修改

这就是我为了获得ASCII而继续前进的原因。但这不是我的问题的答案。

from os import listdir
from os.path import isfile, join
import unicodedata
import codecs

mypath = "C:\\Users\\Collapsed\\data"

filesOnly = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]

for f in filesOnly:
     print f
     fln = mypath + "\\" + f
     fl_in  = codecs.open( fln , 'Ur', 'utf-16')
     fl_out = open( mypath + "\\" + 'ascii_' + f , 'w' ) 
     for line in fl_in:
         fl_out.write( unicodedata.normalize('NFKD', line ).encode('ascii','ignore') )
     fl_in.close()
     fl_out.close() 

0 个答案:

没有答案