by Guest » 23 Feb 2025, 10:12
Ich habe versucht, einen Einzeiler zu erstellen, um dies auszudrucken ("Die nicht perfekte Liste sicherer Zeichen für Dateinamen in den meisten Betriebssystemen"): < /p>
Code: Select all
$ python ./z.py
+,-.
0123456789
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_
abcdefghijklmnopqrstuvwxyz{}~
< /code>
...But haben keinen Weg gefunden, dies zu tun; Musste stattdessen ein kurzes Skript erstellen < /p>
Mein letzter Ein-Liner-Versuch: < /p>
$ python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print( [ chr(c) if (c & 0xdf)!=0x5c else '' for c in [ range(a,b) for a,b in [ li for li in lst ] ] ] )"
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for &: 'range' and 'int'
Die obige Ausgabe, die von Z.py erstellt wurde, enthält:
Code: Select all
#!/bin/env python
# copy of the one-liner
# python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print( [ chr(c) if (c & 0xdf)!=0x5c else '' for c in [ range(a,b) for a,b in [ li for li in lst ] ] ] )"
# attempt to break down of the above
# python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print(
# [ chr(c) if (c & 0xdf)!=0x5c else '' for c in
# [ range(a,b) for a,b in
# [ li for li in lst ]
# ]
# ]
# )"
# working code to create the output
lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ]
for li in lst:
a,b=li
for c in range(a,b):
z=(c & 0xdf)
if z != 0x5c:
print(chr(c), end='')
print()
Wo ist das
Problem mit dem einen Liner. Können Sie genau bestimmen, wie es geht?
Ich habe versucht, einen Einzeiler zu erstellen, um dies auszudrucken ("Die nicht perfekte Liste sicherer Zeichen für Dateinamen in den meisten Betriebssystemen"): < /p>
[code]$ python ./z.py
+,-.
0123456789
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_
abcdefghijklmnopqrstuvwxyz{}~
< /code>
...But haben keinen Weg gefunden, dies zu tun; Musste stattdessen ein kurzes Skript erstellen < /p>
Mein letzter Ein-Liner-Versuch: < /p>
$ python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print( [ chr(c) if (c & 0xdf)!=0x5c else '' for c in [ range(a,b) for a,b in [ li for li in lst ] ] ] )"
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for &: 'range' and 'int'
[/code]
Die obige Ausgabe, die von Z.py erstellt wurde, enthält:
[code]#!/bin/env python
# copy of the one-liner
# python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print( [ chr(c) if (c & 0xdf)!=0x5c else '' for c in [ range(a,b) for a,b in [ li for li in lst ] ] ] )"
# attempt to break down of the above
# python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print(
# [ chr(c) if (c & 0xdf)!=0x5c else '' for c in
# [ range(a,b) for a,b in
# [ li for li in lst ]
# ]
# ]
# )"
# working code to create the output
lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ]
for li in lst:
a,b=li
for c in range(a,b):
z=(c & 0xdf)
if z != 0x5c:
print(chr(c), end='')
print()
[/code]
Wo ist das [url=viewtopic.php?t=11587]Problem[/url] mit dem einen Liner. Können Sie genau bestimmen, wie es geht?