Есть ли способ написать вкладку как символ без необработанной интерпретации? (или как наполовину сырье, наполовину нет) - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь создать систему, которая будет автоматически (и надежно) создавать сетку с ровно 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)
...