l = "['doc']"
minha lista l esta em str, quero transormar ela em lista de novo
coloca assim : l = list('doc') print(l) ou assim: l = list(['doc']) print(l)
Para transformar uma string em uma lista, você pode usar a função eval()
.
No seu exemplo, a string '["doc"]'
representa uma lista com um único elemento, 'doc'
. Para transformá-la em uma lista novamente, você pode fazer o seguinte:
l = '["doc"]'
minha_lista = eval(l)
import ast
# Sua string
l = "['doc']"
# Converter a string de volta para uma lista
lista_resultante = ast.literal_eval(l)
# Imprimir a lista resultante
print(lista_resultante)
Se você tem uma string que representa uma lista, como `l = "['doc']"`, e quer convertê-la de volta para uma lista real, você pode usar a função `ast.literal_eval()` ou a função `eval()` (embora `eval` seja menos seguro e não recomendado para strings com entradas não confiáveis). A função `literal_eval` da biblioteca `ast` é mais segura, pois avalia apenas literais Python válidos (como listas, dicionários, números, etc.) e ignora qualquer código malicioso.
### Usando `ast.literal_eval()`
```python
import ast
l = "['doc']"
# Convertendo a string para uma lista real
lista = ast.literal_eval(l)
print(lista) # Saída: ['doc']
print(type(lista)) # Saída: <class 'list'>
```
### Como funciona:
- **`ast.literal_eval()`**: Essa função avalia a string como um literal Python válido. Ou seja, se a string é uma representação válida de uma lista, tupla, dicionário, etc., ela será convertida de volta para o tipo correspondente.
### Exemplo com múltiplos itens na lista:
Se a sua string contiver mais itens na lista, como:
```python
l = "['doc', 'image', 'pdf']"
```
A conversão funcionará da mesma forma:
```python
lista = ast.literal_eval(l)
print(lista) # Saída: ['doc', 'image', 'pdf']
print(type(lista)) # Saída: <class 'list'>
```
### Alternativa usando `eval()`
Se você optar por usar `eval()`, aqui está como poderia ser feito:
```python
l = "['doc']"
# Convertendo a string para uma lista real usando eval (não recomendado para dados não confiáveis)
lista = eval(l)
print(lista) # Saída: ['doc']
print(type(lista)) # Saída: <class 'list'>
```
### **Atenção**:
O uso de `eval()` pode ser perigoso, especialmente se você estiver lidando com entradas de fontes externas, pois pode executar qualquer código Python, o que pode ser uma vulnerabilidade de segurança.
Por isso, sempre que possível, use `ast.literal_eval()` para converter strings representando listas ou outros tipos literais, já que ele não executa código arbitrário.
Se precisar de mais ajuda, estarei por aqui!