Я пытаюсь создать систему, которая будет автоматически (и надежно) создавать сетку с ровно 16 столбцами, представляющими все возможные символы, которые пользователь мог бы ввести в поле ввода;проблема заключается в том, что пробелы (например, табуляции, новые строки и т. д.) печатаются так, как если бы это была обычная escape-последовательность символов новой строки. Пример:
~(p{][Iu\k#hd-
ebZ24>8<=)'zQAgM
inr?s`/V0vJ;tc6L
1oPyG}CK:&5x37Da
RO!.wYqFSl
9@fN_* <---- not 16 characters
$j,BT^|WH
m+%E
Реальная проблема не в том, что он находится на нескольких строках, как у меня где-то до 25, но если он обрабатывает пробелы как escape-коды, а не символы, тогда, если пользователь вставляетescape-код он не будет найден в этой сетке, что приведет к возникновению проблемЕсть ли решение этой проблемы, так как ничего, о чем я могу думать, не имеет смысла, и любые поисковые термины, которые я пробовал, были сухими. (Следует отметить, что часть способа, которым я печатаю их на нескольких строках, заключается в добавлении символа новой строки в конец каждой последовательности из 16 символов, что делает это еще более трудным, поскольку моей первой идеей было просто использовать необработанную строку иличто-то, но если я сделаю это, он не будет печатать на новых строках без нескольких функций печати, и конечной целью этого, очевидно, будет не просто напечатать текст на терминал)
import string
try:
import secrets
except:
!pip install secrets
import secrets
#self.charlist = list(" {}{}{}".format(string.ascii_letters,string.digits,string.punctuation)) #my old method which didnt include whitespaces
self.charlist = list(string.printable)
print(self.charlist)
self.randomizedlist = []
while self.charlist:
self.temp = secrets.randbelow(len(self.charlist))
self.randomizedlist.append(self.charlist[self.temp])
self.charlist.pop(self.temp)
print(self.randomizedlist)
self.n = 16
self.penfinal = [self.randomizedlist[self.i * self.n:(self.i + 1) * self.n] for self.i in range((len(self.randomizedlist) + self.n - 1) // self.n )] # a one liner I found online to split the list
print(self.penfinal)
self.finallist = []
for self.I in range(len(self.penfinal)):
self.finallist.append("".join(self.penfinal[self.I]))
print(self.finallist)
self.finalstring = ""
for self.I in range(len(self.finallist)):
self.finalstring += self.finallist[self.I] + "\n"
print(self.finalstring)