Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 04.12.2021
Сообщений: 4

Перевод данных из массива в строку

31.03.2022, 20:56. Показов 1045. Ответов 3

Студворк — интернет-сервис помощи студентам
В строках 83-87 считывается массив d из текстового файла. Далее для дальнейшей работы нужно преобразовать его в строку. Подскажите, пожалуйста, как это правильно сделать. В 89 строке пытался это сделать, но видимо не правильно.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
from collections import Counter
 
class Node:
 
    def __init__(self, value, left=None, right=None):
        self.right = right
        self.left = left
        self.value = value
 
def get_code(root, codes=dict(), code=''):
 
    if root is None:
        return
 
    if isinstance(root.value, str):
        codes[root.value] = code
        return codes
 
    get_code(root.left, codes, code + '0')
    get_code(root.right, codes, code + '1')
 
    return codes
 
 
def get_tree(string):
    string_count = Counter(string)
 
    if len(string_count) <= 1:
        node = Node(None)
 
        if len(string_count) == 1:
            node.left = Node([key for key in string_count][0])
            node.right = Node(None)
 
        string_count = {node: 1}
 
    while len(string_count) != 1:
        node = Node(None)
        spam = string_count.most_common()[:-3:-1]
 
        if isinstance(spam[0][0], str):
            node.left = Node(spam[0][0])
 
        else:
            node.left = spam[0][0]
 
        if isinstance(spam[1][0], str):
            node.right = Node(spam[1][0])
 
        else:
            node.right = spam[1][0]
 
        del string_count[spam[0][0]]
        del string_count[spam[1][0]]
        string_count[node] = spam[0][1] + spam[1][1]
 
    return [key for key in string_count][0]
 
 
def coding(string, codes):
    res = ''
 
    for symbol in string:
        res += codes[symbol]
 
    return res
 
 
def decoding(string, codes):
    res = ''
    i = 0
 
    while i < len(string):
 
        for code in codes:
 
            if string[i:].find(codes[code]) == 0:
                res += code
                i += len(codes[code])
 
    return res
 
Code = []
file = open("text.txt", encoding='utf8')
text = file.read().lower()
file.close()
d = {}
 
print(" ".join(map(str, d)))
 
tree = get_tree(d)
 
codes = get_code(tree)
print(f'Шифр: {codes}')
 
coding_str = coding(d, codes)
print('Сжатая строка: ', coding_str)
 
decoding_str = decoding(coding_str, codes)
print('Исходная строка: ', decoding_str)
 
if d == decoding_str:
    print('Успешно!')
else:
    print('Ошибка!')
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2022, 20:56
Ответы с готовыми решениями:

Перевод массива в строку
Как перевести массив в строку подскажите пожалуйста хоть какой метод)

Перевод массива чисел в строку
Помогите разобраться, почему не получается перевод из массива чисел в строку :) char shfrtx; for(i=0; i&lt;num; i++) { //shfrtx =...

Перевод массива символов в строку
День добрый. Есть некая строка символов:(Event:AM_READER|1.46.46|ACCESS_IN|card&lt;ччччч&gt;,slave_id&lt;чччччL&gt;, ...

3
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
01.04.2022, 00:22
Zoink, Вот про такую вот штуку почитайте.
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
01.04.2022, 15:59
Zoink, попробуйте выполнить этот участок
Python
1
2
3
file = open("text.txt", encoding='utf8')
text = file.read().lower()
print(type(text))
будете удивлены что там и так строка потому что в файле изначально строки хотя вы можете видеть там цифры но read() - считывает весь файл в одну строку. может вам что то другое нужно получить?
Метод файла file.readlines() читает файловый объект file построчно, пока не достигнет конца файла EOF и возвращает список, содержащий строки или байтовые объекты файла в зависимости от режима, в котором открыт файл функцией open(). Конечный символ новой строки \n сохраняется в строке.
вот тогда у вас будет список строк
Python
1
print(" ".join(text))
будет выводить элементы списка через пробел но учитывая что ''Конечный символ новой строки \n сохраняется в строке'' то вывод будет построчно.
0
0 / 0 / 0
Регистрация: 04.12.2021
Сообщений: 4
03.04.2022, 13:46  [ТС]
Спасибо всем за ответы. Я нашёл решение:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
from collections import Counter
 
class Node:
 
    def __init__(self, value, left=None, right=None):
        self.right = right
        self.left = left
        self.value = value
 
def get_code(root, codes=dict(), code=''):
 
    if root is None:
        return
 
    if isinstance(root.value, str):
        codes[root.value] = code
        return codes
 
    get_code(root.left, codes, code + '0')
    get_code(root.right, codes, code + '1')
 
    return codes
 
 
def get_tree(string):
    string_count = Counter(string)
 
    if len(string_count) <= 1:
        node = Node(None)
 
        if len(string_count) == 1:
            node.left = Node([key for key in string_count][0])
            node.right = Node(None)
 
        string_count = {node: 1}
 
    while len(string_count) != 1:
        node = Node(None)
        spam = string_count.most_common()[:-3:-1]
 
        if isinstance(spam[0][0], str):
            node.left = Node(spam[0][0])
 
        else:
            node.left = spam[0][0]
 
        if isinstance(spam[1][0], str):
            node.right = Node(spam[1][0])
 
        else:
            node.right = spam[1][0]
 
        del string_count[spam[0][0]]
        del string_count[spam[1][0]]
        string_count[node] = spam[0][1] + spam[1][1]
 
    return [key for key in string_count][0]
 
 
def coding(string, codes):
    res = ''
 
    for symbol in string:
        res += codes[symbol]
 
    return res
 
 
def decoding(string, codes):
    res = ''
    i = 0
 
    while i < len(string):
 
        for code in codes:
 
            if string[i:].find(codes[code]) == 0:
                res += code
                i += len(codes[code])
 
    return res
 
file = open("text.txt")
text = file.read()
print(text)
file.close()
print('Введите строку для сжатия: ', end = '')
my_string = text
tree = get_tree(my_string)
 
codes = get_code(tree)
print(f'Шифр: {codes}')
 
coding_str = coding(my_string, codes)
print('Сжатая строка: ', coding_str)
 
decoding_str = decoding(coding_str, codes)
print('Исходная строка: ', decoding_str)
 
if my_string == decoding_str:
    print('Успешно!')
else:
    print('Ошибка!')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2022, 13:46
Помогаю со студенческими работами здесь

Перевод массива чисел в строку
Всем доброго времени суток! Уже очень долго копаюсь в проблеме. Надо перевести массив в string. int main() { double *Arr =...

Перевод массива bool в строку и обратно
Пытаюсь написать архиватор по алгоритму Хаффмана. Необходимо перегнать массив из bool в байт-строку из нулей и единиц (и обратно). Если...

Перевод двумерного массива по символьно в строку
Здравствуйте, подскажите пожалуйста, как двумерный массив вывести на экран построчно.. уже всё обыскал и ничего не нашёл.

Перевод массива байт в строку и обратно
Здравсвуйте, в результате шифрования есть некоторая последовательность байт. Как преобразовать эту последовательность в строку...

Длинная арифметика. Перевод массива байт в строку
Добрый день ! Прочитал много статей о длинной арифметики . Но озов так и не увидел (или не понял) . Поставил себе задачу для изучения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru