J'ai une chaîne "1,2" code> que j'essaie d'analyser dans
(1, 2) code> sans simplement diviser en fonction de
, code >. Je pensais intuitivement quelque chose dans le sens de:
from typing import Tuple
t = Tuple[int, int]("1,2")
3 Réponses :
Le module code> typing code> est destiné à une chose complètement différente (type d'allusion). Pour autant que je sache, rien ne construit pour faire ce genre de chose. Vous devez analyser manuellement ou analyse manuelle est assez facile, il suffit de scinder simplement sur eval code>.
, code> et de convertir chaque élément en un
int code> : p>
eval code> ing permet aux autres types de données se faufiler, mais est plus "automatique" (utilisez
ast.literal_eval Pour des raisons de sécurité): P>
import ast
your_string = "1,2"
ast.literal_eval(your_string)
Ouais, je pense que la ficelle est la voie à suivre. J'espérais que je pourrais me lancer en quelque sorte car ce serait un code assez propre.
Qu'est-ce que Tomothy32 a mentionné sur une analyse manuelle basée sur la scission par virgule est correcte. Vous pouvez également utiliser une carte pour ce qui précède comme ci-dessous -
your_input = "1,2" your_tuple = tuple(map(int, your_input.split(',')))
pour une simple entrée comme Si l'entrée est plus complexe - peut-être contient des espaces blanche, ou il existe de nombreux séparateurs possibles - vous pouvez écrire un générateur qui donne des entiers: p> Comme c'est souvent le cas, il y a un iTERTOOLS One-Liner qui fait le Même chose: p> mais une regex serait à la fois concise et em> lisible: p> "1,2" code> scission sur
"", " code> est la solution la plus simple.
En plus de la réponse ci-dessous, je souligne que Python ne prend pas en charge "Casting" dans le sens où vous semblez le dire (c'est-à-dire une fonte C Lang). Oui, vous pouvez faire des choses comme
l = [1, 2]; t = tuple (l) code> mais ce n'est pas "casting". Vous appelez un constructeur qui sait comment convertir une liste en tuple.