Как преобразовать строку, содержащую кортеж целых чисел, в кортеж с целочисленными элементами - PullRequest
1 голос
/ 12 января 2020

У меня есть эта строка:

x="(255,255,233...)"

И я хочу преобразовать ее в кортеж. Однако без каких-либо строковых объектов. Но я получил что-то вроде этого:

x=("255","233")

Я пытался использовать a для l oop и isdigit() и tuple(), но это не дало мне то, что я хочу.

Я хочу, чтобы он был кортежем с целочисленными элементами без "," или "()" в кортеже.

Ответы [ 3 ]

1 голос
/ 12 января 2020

Вы можете безопасно использовать ast.literal_eval для такой строки:

import ast

x="(255,255,233)"

ast.literal_eval(x)
# (255, 255, 233)
0 голосов
/ 12 января 2020

вы можете использовать библиотеку ast для этого случая:

import ast

x = "(255,255,233...)"

data = ast.literal_eval(x.replace(".",""))

print(type(data))

print(type(data[0]))

print(data)

literal_eval() более безопасный вариант, чем eval().

Только предостережение - решение предполагает наличие периодов "." во входных строках. Вы должны знать, с какими изменениями вы столкнетесь во входных данных.

0 голосов
/ 12 января 2020

Вы можете просто использовать это:

x = "(255,255,233...)"
tuples = tuple(int(number) for number in x.replace('(', '').replace(')', '').replace('...', '').split(','))
print(tuples)

>>> (255, 255, 233)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...