我正在一行读取一个巨大的制表符分隔文件,如果特定字段的值大于k,则保留该行.由于此字段存储为字符串,因此我将该值转换为int(x).我在特定行中收到以下错误.当我尝试打印该行时,我看到与此类似的条目.
ValueError: invalid literal for int() with base 10:
'\xc3\xd2u\xc4\x99\xc3\xc2\xe8v\x00\xcb\xa5T\x13\xc5F\xe7\x00\xc9*\x8e\xc5vV\xc0W\xe3\xc1\xee\xe2\xc0\xa3i\x00\xcc\r\x11\xc8\xaf\xb2\xc0\xa9+\xc2\x9b\x13\x00\xcb<\xbe\xc1C\x07\xc6\xd6%\xc0}\xd7\x00\xcc\xdc?\xc3%t\xc0o\x1a\x13\xc5#\x9e\x00\xcb.\xf6\xc5\xe5G\x00\xcb2\x00\x13\xc0N\xa5\xc2cr\x96\xec\x98-\xc6\x025\x00\xcd\x04\xff\xc0\xc6}\xc1+\xdf\xc1j\x14\xc0\xff+......'
Run Code Online (Sandbox Code Playgroud)
什么是检测此类线路或移除此类线路的有效方法?
例如,
if any(ord(x) > 127 for x in line)....
Run Code Online (Sandbox Code Playgroud)
要么
import re
if re.search(r'[\x80-\xFF]', line)...
Run Code Online (Sandbox Code Playgroud)
为了回应编辑,我建议像
for line in file:
fields = line.split('\t')
if len(fields) != <expected number of fields>:
# invalid line
continue
try:
k = int(fields[<field number>]
except ValueError:
# invalid line
continue
if k < <threshold>:
# skip it
continue
# now process the line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |