簡體   English   中英

如何從我的隨機二進制字符串中刪除換行符?

[英]How can I remove newlines from my random binary string?

我制作了一個 Python 腳本來生成隨機二進制字符串,然后將它們轉換為 ASCII。

from random import *

def decode(binary):
    # credit to mhawke from stack overflow
    return ''.join(chr(int(binary[i*8:i*8+8],2)) for i in range(len(binary)//8))
    
def generate_random_binary(chars=None):
    if not chars:
        chars = randint(10, 20)
    r = ''
    for i in range(chars * 5):
        num = choice(['0', '1'])
        r = r + num
    return r

generated = generate_random_binary(64)
decoded = decode(generated)
decoded = eval("r'''"+decoded.replace('\0', '')+"'''")
print(decoded.replace('\n', ''))

有時我會得到帶有換行符的輸出,即使我試圖刪除它們。 有什么我想念的嗎?

這是我的輸出示例(在 Repl.it 中運行):

ìîù_½   Ý05!d­(óÞÉ|½b°L³µ¬
                          H}N¸'Ä

我認為是LF和CR。 \n僅替換 LF。

見這里http://www.asciitable.com/

我認為最好用“。”替換不可打印的字符。 或空格''。

from random import *
import unicodedata

printable = {'Lu', 'Ll'}
def replace_nonprintable_with_period(str):
  return ''.join(c  if unicodedata.category(c) in printable else '.' 
                 for c in str)
#credit to https://stackoverflow.com/a/93557/4983398

def decode(binary):
    # credit to mhawke from stack overflow
    return ''.join(chr(int(binary[i * 8:i * 8 + 8], 2)) for i in range(len(binary) // 8))


def generate_random_binary(chars=None):
    if not chars:
        chars = randint(10, 20)
    r = ''
    for i in range(chars * 5):
        num = choice(['0', '1'])
        r = r + num
    return r


generated = generate_random_binary(64)
decoded = decode(generated)
decoded = eval("r'''" + decoded.replace('\0', '') + "'''")
print(replace_nonprintable_with_period(decoded))

樣本輸出:

.Ä.Ô..WE..nuO.Ä...çò.Á.......Àã..c...Ñ..

unicode.category 是 unicode 和 Python 的一個非常有用的特性。 有關更多詳細信息,請參閱本文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM