Преобразование текстового документа в массив NSCY чисел в Python - PullRequest
0 голосов
/ 10 июня 2018

У меня есть большой текстовый документ (UTF-8), который содержит буквы, цифры, пробелы, специальные символы и т. Д.

Я хочу преобразовать все отдельные символы в текстовом документе в числа изатем представьте документ в виде массива.

Могу ли я использовать встроенную функцию python ord () для этого?

Насколько я понимаю, он возвращает целое число, представляющее кодовую точку Unicode символа, но принимает только один символ за раз, и мне интересно, есть ли лучший способ преобразовать большой текстовый документ вномера.

Или я могу просто перебрать весь документ с помощью функции ord ()?

edit

Я просто хочу сделать что-то подобное!но изначально в python https://www.browserling.com/tools/text-to-ascii

Это то, что у меня сейчас есть

def convert_to_ascii(text):
    return ",".join(str(ord(char)) for char in text)

with open('test.txt', 'r') as myfile:
    data = myfile.read()

convert_to_ascii(data)

values = [int(i) for i in x.split(',')] 

array = np.array(values)

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 10 июня 2018

Вам следует пропустить часть ",".join(), поскольку здесь это не нужно.

Вместо этого вы можете просто создать список values в функции convert_to_ascii():

def convert_to_ascii(text):
    return [ord(char) for char in text)

values = convert_to_ascii(data)
array = np.array(values)

Тем не менее, даже промежуточный список не нужен, так как массив numpy может быть создан из итерируемого.И это может сделать это эффективно, если вы заранее знаете длину.И вы делаете: это длина строки.Таким образом:

def convert_to_ascii(text):
    for char in text:
        yield ord(char)

array = np.fromiter(convert_to_ascii(data), count=len(data))

И эту функцию convert_to_ascii можно заменить вызовом встроенной функции map:

array = np.fromiter(map(ord, data), count=len(data))

Кстати, если ваш файлв кодировке UTF-8 вам, вероятно, следует открыть файл с параметром encoding="utf-8", чтобы быть уверенным.Значение по умолчанию зависит от платформы / локали.

...