如何在python中删除包含非ascii值的行

use*_*126 2 python

我正在一行读取一个巨大的制表符分隔文件,如果特定字段的值大于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)

什么是检测此类线路或移除此类线路的有效方法?

geo*_*org 5

例如,

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)