def get_values_from_line(line):
    """Get values of an observation as a list from string,
    splitted by semicolons.
    Note 1: Ignore ';' inside \"...\". E.g. consider \"xxx;yyy\" as one value.
    Note 2: Null string '' for NA values.
    """
    raw_list = line.strip().split(';')
    i = 0
    values = []
    while i < len(raw_list):
        if raw_list[i] == "" or raw_list[i][0] != '\"':
            values.append(raw_list[i])
            i = i + 1
        else:
            if raw_list[i][-1] == '\"':
                values.append(raw_list[i][1:-1])
                i = i + 1
            else:
                j = i + 1
                entry = raw_list[i][1:]
                while j < len(raw_list) and raw_list[j][-1] != '\"':
                    entry = entry + raw_list[j]
                    j = j + 1
                if j == len(raw_list):
                    i = j
                else:
                    entry = entry + raw_list[j][:-1]
                    values.append(entry)
                    i = j + 1
                    
    return values