我正在使用一些CSV文件,使用以下代码:
reader = csv.reader(open(filepath, "rU"))
try:
for row in reader:
print 'Row read successfully!', row
except csv.Error, e:
sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e))
Run Code Online (Sandbox Code Playgroud)
一个文件抛出此错误:
file my.csv, line 1: line contains NULL byte
Run Code Online (Sandbox Code Playgroud)
我能做什么?谷歌似乎暗示它可能是一个Excel文件被不正当地保存为.csv.有什么方法可以解决Python中的这个问题吗?
==更新==
按照下面@ JohnMachin的评论,我尝试将这些行添加到我的脚本中:
print repr(open(filepath, 'rb').read(200)) # dump 1st 200 bytes of file
data = open(filepath, 'rb').read()
print data.find('\x00')
print data.count('\x00')
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\ .... <snip>
8
13834
Run Code Online (Sandbox Code Playgroud)
所以该文件确实包含NUL字节.
我怎么知道文件是否是二进制文件?
例如,编译的c文件.
我想从某个目录中读取所有文件,但我想忽略二进制文件.
我正在使用Max OS X 10.10.3,我终于graphics.py在Python 3中展示了它之前没有出现任何模块.
但是,现在当我尝试import graphics,或者from graphics import *,我收到消息:
"source code string cannot contain null bytes"
Run Code Online (Sandbox Code Playgroud)
是否有任何Mac用户(使用Python 3)可能知道什么是错的?有人用过Zelle书和他的graphics.py模块吗?谢谢.
问题
所以我有这个包含<0x00>字符的大文本文件(见下图)。
如上图所示,我尝试使用正则表达式删除这些字符\x00。除此之外,我还tryed \0,并\00没有成功。
但是,当我尝试在 Sublime Text 中替换这些字符时,弹出窗口显示<0x00>确实已找到这些字符(见下图),到目前为止一切顺利。
不幸的是,当我单击“替换”按钮时,字符没有被替换。
题
我怎样才能摆脱这些<0x00>字符?
ps 重要的是要提到我不能对“0”进行搜索,因为这个文本文件包含零,我想保留它。
我设法将 <0x00> 字符复制到“查找”搜索框中(见下图)。
但是,即使我尝试用文本文件中的空字符替换此字符,也不会发生任何更改。
没有@00 的帮助,我找不到这个问题的答案,谢谢!
解释
该文件以 UTF-16 编码,但我认为它是 UTF-8。该文件是在BOM UTF-8中打开的,这正是我无法删除<0x00>Sublime Text 3 中的(NUL) 字符的原因。
解决方案
在“bash”或“终端”中执行以下命令:
sed -i 's/\x0//g' [textfile_name].txt
我的原始 CSV 文件在每个块中都有 float64 值,但在我使用 pd.csv() 读取文件后,它返回一个空白表。我试图设置分隔符和函数的编码,但它根本没有帮助。CSV 文件是由软件自动生成的,我无法检查设置的设置。有什么方法可以将我的文件读取到具有正确值的数据框?
>>> pd.read_csv('./HISTORY_LOG_05-31-2018.CSV')
D Unnamed: 1 Unnamed: 2 ... Unnamed: 108 Unnamed: 109 Unnamed: 110
0 NaN NaN NaN ... NaN NaN NaN
1 NaN NaN NaN ... NaN NaN NaN
2 NaN NaN NaN ... NaN NaN NaN
3 NaN NaN NaN ... NaN NaN NaN
4 NaN NaN NaN ... NaN NaN NaN
5 NaN NaN NaN ... NaN NaN NaN
[6 rows x 111 columns]
Run Code Online (Sandbox Code Playgroud)
我将 CSV 文件简化为
A,B
0.000,0.000 …Run Code Online (Sandbox Code Playgroud) 我有一个由别人的软件生成的平面文件.它们在文件的某些位置插入空字符^ @.我希望用-9替换它们.如何在Mac OS X上的终端中有效地搜索和替换此字符?
谢谢.
还有另一篇文章在linux中解决了这个问题.
python ×3
csv ×2
macos ×2
binaryfiles ×1
pandas ×1
replace ×1
shell ×1
sublimetext3 ×1
terminal ×1
unix ×1