Hoy aprendemos conversión del pitón de varias estructuras de datos comunes: 字符串(str)
, 字典(dict)
, 列表(list)
.
String - lista
Lista de transferencia de cadena
- 1. Utilice el built-in funciones
list()
>>> str1 = "abcdefg"
>>> list1 = list(str1)
>>> print(list1)
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>>
- 2. Utilice el built-in funciones
eval()
>>> str2 = "['aaa', 'bbb', 'ccc', 'ddd']"
>>> list2 = eval(str2)
>>> print(type(list2))
<class 'list'>
>>> print(list2)
['aaa', 'bbb', 'ccc', 'ddd']
>>>
- 3. Utilice el módulo incorporado
json.loads()
método
# str3 = "['aaa', 'bbb', 'ccc', 'ddd']"
# 因为 json.loads() 是将json格式字符串转换为python对象,而按 json 的标准规范应该使用双引号,如果使用单引号会导致报错
>>> str3 = '["aaa", "bbb", "ccc", "ddd"]'
>>> import json
>>> list3 = json.loads(str3)
>>> print(type(list3))
<class 'list'>
>>> print(list3)
['aaa', 'bbb', 'ccc', 'ddd']
>>>
- 4. El uso
split()
dividido
>>> str4 = "username=admin&passsword=123456"
>>> list4 = str4.split("&")
>>> print(type(list4))
<class 'list'>
>>> print(list4)
['username=admin', 'passsword=123456']
>>>
Si queremos dividir múltiples caracteres, se puede utilizar el módulo incorporado re.split()
método.
>>> str5 = "username=admin&passsword=123456"
>>> import re
>>> list5 = re.split("&|=", str5)
>>> print(type(list5))
<class 'list'>
>>> print(list5)
['username', 'admin', 'passsword', '123456']
>>>
Lista de cuerdas
- 1. Utilice el built-in funciones
str()
# 注意,转换之后,双引号会变为单引号
>>> list1 = ["aaa", 123, 'ccc', True]
>>> str1 = str(list1)
>>> print(type(str1))
<class 'str'>
>>> print(str1)
['aaa', 123, 'ccc', True]
>>>
Directamente por encima str()
, es convertir toda la lista en una cadena, si no queremos cambiar el tipo de lista, pero desea una lista de todos los elementos en una cadena, que puede ser implementado por listas por comprensión.
# 注意,转换之后,双引号会变为单引号
>>> list1 = ["aaa", 123, 'ccc', True]
>>> str2 = [str(i) for i in list2]
>>> print(type(str2))
<class 'list'>
>>> print(str2)
['aaa', '123', 'ccc', 'True']
>>>
- 2. Uso
join()
de empalme
>>> list3 = ['username=admin', 'passsword=123456']
>>> str3 = "&".join(list3)
>>> print(type(str3))
<class 'str'>
>>> print(str3)
username=admin&passsword=123456
>>>
- 3. Utilice el módulo incorporado
json.dumps()
método
# 这里列表中使用了单引号
>>> list4 = ['username=admin', 'passsword=123456']
>>> import json
>>> str4 = json.dumps(list4)
>>> print(type(str4))
<class 'str'>
>>> print(str4)
["username=admin", "passsword=123456"]
>>>
Se hace notar que, de acuerdo con json
las especificaciones estándar es el uso de comillas dobles ""
, por lo cadena JSON después de la conversión obtenida es comillas dobles.
String - diccionario
Diccionario de cuerda a su vez
- 1. Utilice el built-in funciones
eval()
>>> str1 = "{'username':'admin', 'password':123456}"
>>> dict1 = eval(str1)
>>> print(type(dict1))
<class 'dict'>
>>> print(dict1)
{'username': 'admin', 'password': 123456}
>>>
- 2. Utilice el módulo incorporado
json.loads()
método
# str1 = "{'username':'admin', 'password':123456}"
# 因为 json.loads() 是将json格式字符串转换为python对象,而按 json 的标准规范应该使用双引号,如果使用单引号会导致报错
>>> str2 = '{"username":"admin", "password":123456}'
>>> import json
>>> dict2 = json.loads(str2)
>>> print(type(dict2))
<class 'dict'>
>>> print(dict2)
{'username': 'admin', 'password': 123456}
>>>
- 3. Utilice el módulo incorporado
ast.literal_eval()
método
>>> str3 = "{'username':'admin', 'password':123456}"
>>> import ast
>>> dict3 = ast.literal_eval(str3)
>>> print(type(dict3))
<class 'dict'>
>>> print(dict3)
{'username': 'admin', 'password': 123456}
>>>
Hemos encontrado, Python ya se ha incorporado en funciones eval()
, pero ahora una apariencia similar, pero ast.literal_eval()
el método, ¿cuál es la diferencia entre los dos es?
Esto se debe principalmente por razones de seguridad, ya que el
ast.literal_eval()
resultado del cálculo determinará el tipo de pitón no es legítimo, si se vuelve a efectuar operaciones, o no llevar a cabo las operaciones, peroeval()
no los controla, incluso si la cadena es un comando, el mismo será resuelto.
Por lo tanto, en comparación con eval()
la función, ast.literal_eval()
más seguro, más se recomienda .
Diccionario de cuerdas
- 1. Utilice el built-in funciones
str()
>>> dict1 = {'username': 'admin', 'password': 123456}
>>> str1 = str(dict1)
>>> print(type(str1))
<class 'str'>
>>> print(str1)
{'username': 'admin', 'password': 123456}
>>>
- 2. Utilice el módulo incorporado
json.dumps()
método
>>> dict2 = {'username': 'admin', 'password': 123456}
>>> import json
>>> str2 = json.dumps(dict2)
>>> print(type(str2))
<class 'str'>
>>> print(str2)
{"username": "admin", "password": 123456}
>>>
Se hace notar que, de acuerdo con json
las especificaciones estándar es el uso de comillas dobles ""
, por lo cadena JSON después de la conversión obtenida es comillas dobles.
Si queremos obtener los restos de cadena entre comillas simples, puede ser replace()
maneras de lidiar con las cosas simples.
>>> dict3 = {'username': 'admin', 'password': 123456}
>>> import json
>>> str3 = json.dumps(dict3).replace("\"", "'")
>>> print(type(str3))
<class 'str'>
>>> print(str3)
{'username': 'admin', 'password': 123456}
>>>
Diccionario - lista
Lista de transferencia de diccionario
- 1. Utilice el built-in funciones
list()
>>> dict1 = {"a": 1, "b": "2", "c": True}
>>> list1 = list(dict1.keys())
>>> print(list1)
['a', 'b', 'c']
>>> list2 = list(dict1.values())
>>> print(list2)
[1, '2', True]
>>>
Lista de los diccionarios a su vez
- 1. El uso de la incorporada en la función
dict()
, una lista anidada en los diccionarios
>>> list3 = [['a', 1], ['b', '2'], ['c', True]]
>>> dict2 = dict(list3)
>>> print(type(dict2))
<class 'dict'>
>>> print(dict2)
{'a': 1, 'b': '2', 'c': True}
>>>
- 2. Utilice el built-in funciones
zip()
, las dos listas en el diccionario
>>> list1 = ["a", 'b', "c", 'd', "f"]
>>> list2 = ["1", '2', "3", '4', "5"]
>>> dict1 = dict(zip(list1,list2))
>>> print(type(dict1))
<class 'dict'>
>>> print(dict1)
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'f': '5'}
>>>
Si la longitud de las dos listas no son los mismos, entonces ellos no muestran los elementos adicionales.
>>> list1 = ["a", 'b', "c"]
>>> list2 = ["1", '2', "3", '4', "5"]
>>> dict1 = dict(zip(list1,list2))
>>> print(type(dict1))
<class 'dict'>
>>> print(dict1)
{'a': '1', 'b': '2', 'c': '3'}
>>>