def matches(value, attr_list):
    """Return whether value matches the attribute described by attr_list

    Attributes come from mutagen as lists of strings (except for the "path"
    attribute). If the value is surrounded by double quotes, we look for exact
    matches; otherwise, we join together the attribute list with Snowman
    characters and then do a substring match against the joined string.
    """
    if value.startswith('"') and value.endswith('"'):
        return value[1:-1] in attr_list
    combined_attr_values = "\N{SNOWMAN}".join(attr_list).lower()
    return value.lower() in combined_attr_values