import string
def format_filename(s):
## from https://g...content-available-to-author-only...b.com/seanh/93666
"""Take a string and return a valid filename constructed from the string.
Uses a whitelist approach: any characters not present in valid_chars are
removed. Also spaces are replaced with underscores.
Note: this method may produce invalid filenames such as ``, `.` or `..`
When I use this method I prepend a date string like '2009_01_15_19_46_32_'
and append a file extension like '.txt', so I avoid the potential of using
an invalid filename.
"""
valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
filename = ''.join(c for c in s if c in valid_chars)
filename = filename.replace(' ','_') # I don't like spaces in filenames.
return filename
astr='\gbahsd:njs?<>|"asd/as*'
res = format_filename(astr)
print(res)
aW1wb3J0IHN0cmluZwoKZGVmIGZvcm1hdF9maWxlbmFtZShzKToKCSMjIGZyb20gaHR0cHM6Ly9nLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5iLmNvbS9zZWFuaC85MzY2NgogICAgIiIiVGFrZSBhIHN0cmluZyBhbmQgcmV0dXJuIGEgdmFsaWQgZmlsZW5hbWUgY29uc3RydWN0ZWQgZnJvbSB0aGUgc3RyaW5nLgogICAgVXNlcyBhIHdoaXRlbGlzdCBhcHByb2FjaDogYW55IGNoYXJhY3RlcnMgbm90IHByZXNlbnQgaW4gdmFsaWRfY2hhcnMgYXJlCiAgICByZW1vdmVkLiBBbHNvIHNwYWNlcyBhcmUgcmVwbGFjZWQgd2l0aCB1bmRlcnNjb3Jlcy4KICAgIAogICAgTm90ZTogdGhpcyBtZXRob2QgbWF5IHByb2R1Y2UgaW52YWxpZCBmaWxlbmFtZXMgc3VjaCBhcyBgYCwgYC5gIG9yIGAuLmAKICAgIFdoZW4gSSB1c2UgdGhpcyBtZXRob2QgSSBwcmVwZW5kIGEgZGF0ZSBzdHJpbmcgbGlrZSAnMjAwOV8wMV8xNV8xOV80Nl8zMl8nCiAgICBhbmQgYXBwZW5kIGEgZmlsZSBleHRlbnNpb24gbGlrZSAnLnR4dCcsIHNvIEkgYXZvaWQgdGhlIHBvdGVudGlhbCBvZiB1c2luZwogICAgYW4gaW52YWxpZCBmaWxlbmFtZS4KICAgIAogICAgIiIiCiAgICB2YWxpZF9jaGFycyA9ICItXy4oKSAlcyVzIiAlIChzdHJpbmcuYXNjaWlfbGV0dGVycywgc3RyaW5nLmRpZ2l0cykKICAgIGZpbGVuYW1lID0gJycuam9pbihjIGZvciBjIGluIHMgaWYgYyBpbiB2YWxpZF9jaGFycykKICAgIGZpbGVuYW1lID0gZmlsZW5hbWUucmVwbGFjZSgnICcsJ18nKSAjIEkgZG9uJ3QgbGlrZSBzcGFjZXMgaW4gZmlsZW5hbWVzLgogICAgcmV0dXJuIGZpbGVuYW1lCgoKYXN0cj0nXGdiYWhzZDpuanM/PD58ImFzZC9hcyonCnJlcyA9IGZvcm1hdF9maWxlbmFtZShhc3RyKQpwcmludChyZXMpCg==