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

Выделить все шестнадцатеричные числа из строки

05.08.2023, 08:28. Показов 14185. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, в которой встречаются натуральные шестнадцатеричные числа. Их запись начинается с 0x и использует большие латинские буквы (например, 0x1A).

Других чисел в строке нет. К сожалению, некоторые числа записаны неправильно - пропущен префикс "0x". Но может быть и обратная ситуация, после "0x" записано не число.

Ваша задача выделить все шестнадцатеричные числа из строки, дописав, где необходимо пропущенный префикс "0x".
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2023, 08:28
Ответы с готовыми решениями:

Выделить шестнадцатеричные целые числа без знака и напечатать шестнадцатеричную сумму их нечетных цифр
Задание вот такое. Составить программу на языке Си. Выделить шестнадцатеричные целые числа без знака и напечатать шестнадцатеричную сумму...

Строка: Выделить из строки все числа, игнорируя всё остальное.
Здравствуйте, помогите сделать такое задание: требуется выделить из строки все числа, игнорируя всё остальное. Строка разделяется...

Строки. Выделить из строки все подстроки, содержащие числа, и преобразовать в тип integer
Буду очень признателен если вы поможете с этим заданием. А задание таково: у нас есть строка S, она имеет такой вид (общий) => S:='123...

6
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,215
05.08.2023, 11:04
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
import re
s = '0x12b2FCX ABCD02 v 657i45FDabcd'
out = []
hex = re.findall(r'(?:0x)?[0-9A-F]+',s)
for i in hex:
    if re.match(r'0x', i):
        out.append(i)
    else:
        out.append('0x'+i)
 
print(out)
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
05.08.2023, 14:38
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

YuS_2, update, с вашего позволения
Python
1
2
3
4
5
import re
 
s = '0x12b2FCX ABCD02 v 657i45FDabcd'
hex = list(map(lambda x: f'0x{x}', re.findall(r'(?:0x)?([0-9A-F]+)', s)))
print(hex)
4
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,215
05.08.2023, 16:51
Цитата Сообщение от iSmokeJC Посмотреть сообщение
update
да, так точнее/компактнее/красивее/быстрее
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.08.2023, 10:19
Для тренировки со строками написал то же самое, но без регулярок:
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
from random import choices, randint
from string import printable, hexdigits
 
def make_s():
    s = ''.join(choices(printable, k=80))
    s = ''.join([x for x in s if not x.isspace()])
    for _ in range(10):
        i = randint(0,len(s))
        s = s[:i] + '0x' + s[i:]
    return s
 
def get_16_nums(s):
    num_s = ''
    res_arr = []
    i = 0
    is_16_digit = lambda x: s[x] in hexdigits.upper()
    while i < len(s):
        while i < len(s) and not is_16_digit(i):
            i += 1
        if i+2 < len(s) and s[i:i+2] == '0x' and is_16_digit(i+2):
            num_s = s[i:i+3]
            i += 3
        elif i < len(s) and is_16_digit(i):
            num_s = '0x' + s[i]
            i += 1
        if num_s:
            while i < len(s) and is_16_digit(i):
                num_s += s[i]
                i += 1
            res_arr.append(num_s)
            num_s = ''
    return res_arr
 
def get_16_nums_re(s):
    import re
    hex = list(map(lambda x: f'0x{x}', re.findall(r'(?:0x)?([0-9A-F]+)', s)))
    return hex
 
for _ in range(10000):
    s = make_s()
    a = get_16_nums(s)
    b = get_16_nums_re(s)
    if a != b:
        print(f's = {s}')
        print(a)
        print(b)
        print('Не совпадают!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
        print()
        input('->')
print(f's = {s}')
print(a)
print(b)
print('+++++++++++++++++++++++++++++++++++++++++++++++++++++++')
0
0 / 0 / 0
Регистрация: 05.07.2024
Сообщений: 1
05.07.2024, 18:28
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
chisla = []
s = []
o = []
n = str(input())
n1 = n.split(" ")
for n in n1:
    letters = "GHIJKLMNOPQRSTUVWXYZ"
    n2 = n.replace("0x", "")
    if n.startswith("0x") and n2.isdigit():
        chisla.append(n)
    elif n.isdigit() and not n.startswith("0x"):
            nd2 = "0x" + n
            chisla.append(nd2)
    elif n.startswith("0x") and n2.isupper():
        if any(letter in n2 for letter in letters):
            o.append(n)
        else:
            chisla.append(n)     
    elif n.isupper() and not n.startswith("0x"):
        if any(letter in n2 for letter in letters):
            o.append(n)
        else:
            chisla.append("0x" + n)   
 
 
 
print(" ".join(chisla))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
06.07.2024, 18:26
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
def tokenize(text: str) -> str {
    t = iter(text.lower());
    buf = [];
    try {
        while True {
            ch = next(t);
            if ch == '0' {
                ch = next(t);
                if ch == 'x' {
                    ch = next(t);
                } else {
                    buf.append('0');
                }
            } 
            while ch in '0123456789abcdef' {
                buf.append(ch);
                ch = next(t);
            }
            if buf {
                yield '0x' + ''.join(buf);
                buf.clear();
            }
        }
    } except StopIteration {
        if buf {
            yield '0x' + ''.join(buf);
            buf.clear();
        }
        return None;
    }
}
 
s = '0 000 0x12b2FCX ABCD02 v 657i45FDabcd';
for i in tokenize(s) {
    print(i);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2024, 18:26
Помогаю со студенческими работами здесь

Алгоритм. Выделить из строки все вещественные числа
Здравствуйте. Стоит задача: выделить из строки все вещественные числа. Набросал алгоритм и код, но что-то не работает ;( Да и не знаю, как...

Выделить из множества все четные числа и числа, делящиеся без остатка на 19
Даны множества Х1 и Х2, содержащие целые числа из диапазона . Сформировать новое множество Y= Х1 Х 2 и выделить из него все четные числа...

Строки. Выделить в подстроку все символы исходной строки, расположенные между первым и вторым двоеточием
Дана строка s, содержащая менее чем 200 символов. Получить подстроку символов, включающую все символы исходной строки, расположенные между...

Сформировать новое множество и выделить из него все четные числа и числа, делящиеся без остатка на 19
Доброго времени суток! Может у кого есть решение этой задачи или поможет ее решить?) Даны множества X1 и Х2, содержащие целые числа...

Шестнадцатеричные числа
Приветствую уважаемые форумчане. Не могу понять. MySql показывает шестнадцатеричные значение 1e7 в десятичной системе как...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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