I am building a URL query, that allows the filtering of multiple fields. The filtering (e.g. from a form) is stored as pair values: column and FILTER. I am storing the filters as a list of pairs.
I want to join a list of paired values (column, FILTER) into a url string.
Sample:
"$filter=contains(column1%2C%27FILTER1%27)+and+contains(column2%2C%27FILTER2%27)+and+contains(column3..."
filter_lists = [['level', 'FIRST'], ['name', 'OFFICE'], ['number', 'FIVE']]
filter1 = f"contains({filter_lists[0][0]}%2C%27{filter_lists[0][1]}%27)"
filter_rest = [[f"+and+contains({item}%2C%27" for item in filter_lists[1:]] for subitem in filter_lists[0]][0]
filter_all = "".join(filter_rest)
url_str = f"$filter={filter1}{filter_all}"
url_str returns:
"$filter=contains(level%2C%27FIRST%27)+and+contains(['name', 'OFFICE']%2C%27+and+contains(['number', 'FIVE']%2C%27"
desired string:
"$filter=contains(level%2C%27FIRST%27)+and+contains(name%2C%27OFFICE%27)+and+contains(number%2C%27FIVE%27)"
Is there a simpler way instead of storing the columns and filters in a list[list]?
url_str = f"$filter={'+and+'.join(f'contains({c}%2C%27{v}%27)' for c, v in filter_lists)}".