0
votes

Python casting tuple [int, int]

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")


1 commentaires

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) mais ce n'est pas "casting". Vous appelez un constructeur qui sait comment convertir une liste en tuple.


3 Réponses :


2
votes

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 eval code>.

analyse manuelle est assez facile, il suffit de scinder simplement sur , code> et de convertir chaque élément en un int code> : p> xxx pré>

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)


1 commentaires

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.



0
votes

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(',')))


0 commentaires

0
votes

pour une simple entrée comme "1,2" scission sur "", " est la solution la plus simple.

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: xxx

Comme c'est souvent le cas, il y a un iTERTOOLS One-Liner qui fait le Même chose: xxx

mais une regex serait à la fois concise et lisible: xxx


0 commentaires