def _find_nonascii(s):
    """
    Return a list of (line#, [col#, col#, col#]) tuples, one per line, that identify the positions of non-ascii characters.
    Lines without non-ascii characters are skipped.
    Returns an empty list if none found.
    Number values are zero-indexed.
    """

    outvals = []
    lines = s.split('\n')
    for il, l in enumerate(lines):
        colnums = []
        for ic, c in enumerate(l):
            if not (0 <= ord(c) <= 127):
                colnums.append(ic)
        if colnums:
            #print(len(l), l)
            #print(['%X' % ord(c) for c in l])
            #print(len(l.encode('utf8')), l.encode('utf8'))
            outvals.append((il, colnums))
    return outvals