Как создать GUID / UUID в Python

Один подход с использованием модуля re или регулярного выражения, который должен выполнить эту задачу:

import re

string1 = "pizza pony"
string2 = "who knows what a pizza pony is?"

search_result = re.search(r'\b' + string1 + '\W', string2)

print(search_result.group())
567
задан dreftymac 13 January 2018 в 14:40
поделиться

3 ответа

uuid модуль, в Python 2.5 и, предоставляет RFC совместимое поколение UUID. См. документы модуля и RFC для деталей. [ источник ]

Документы:

Пример (работающий над 2 и 3):

>>> import uuid
>>> uuid.uuid4()
UUID('bd65600d-8669-4903-8a14-af88203add38')
>>> str(uuid.uuid4())
'f50ec0b7-f960-400d-91f0-c42a6d44e3d0'
>>> uuid.uuid4().hex
'9fe2c4e93f654fdbb24c02b15259716c'
659
ответ дан stuartd 14 January 2018 в 00:40
поделиться

При использовании Python 2.5 или позже, , uuid модуль уже включен с распределением стандарта Python.

Исключая:

>>> import uuid
>>> uuid.uuid4()
UUID('5361a11b-615c-42bf-9bdb-e2c3790ada14')
319
ответ дан jesterjunk 14 January 2018 в 00:40
поделиться

Ответ 2019 года (для Windows):

, Если Вы хотите постоянный UUID, который определяет машину исключительно в Windows, можно использовать этот прием: (Скопированный с моего ответа в https://stackoverflow.com/a/58416992/8874388).

from typing import Optional
import re
import subprocess
import uuid

def get_windows_uuid() -> Optional[uuid.UUID]:
    try:
        # Ask Windows for the device's permanent UUID. Throws if command missing/fails.
        txt = subprocess.check_output("wmic csproduct get uuid").decode()

        # Attempt to extract the UUID from the command's result.
        match = re.search(r"\bUUID\b[\s\r\n]+([^\s\r\n]+)", txt)
        if match is not None:
            txt = match.group(1)
            if txt is not None:
                # Remove the surrounding whitespace (newlines, space, etc)
                # and useless dashes etc, by only keeping hex (0-9 A-F) chars.
                txt = re.sub(r"[^0-9A-Fa-f]+", "", txt)

                # Ensure we have exactly 32 characters (16 bytes).
                if len(txt) == 32:
                    return uuid.UUID(txt)
    except:
        pass # Silence subprocess exception.

    return None

print(get_windows_uuid())

Windows API Использования для получения постоянного UUID компьютера, затем обрабатывает строку, чтобы гарантировать, что это - допустимый UUID и наконец возвращает объект Python ( https://docs.python.org/3/library/uuid.html ), который дает Вам удобные способы использовать данные (такие как 128-разрядное целое число, шестнадцатеричная строка, и т.д.).

Удачи!

пз: вызов подпроцесса мог, вероятно, быть заменен ctypes, непосредственно назвав Windows kernel/DLLs. Но в моих целях эта функция - все, в чем я нуждаюсь. Это делает сильную проверку и приводит к корректным результатам.

0
ответ дан 22 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: