Zusammenfassung der Methoden zur Konvertierung von Python-Typen

爱喝马黛茶的安东尼
Freigeben: 2019-06-17 16:43:21
Original
7961 Leute haben es durchsucht

Wie tippe ich die Konvertierung in Python ein?

Verwandte Empfehlungen: „Python-Video

Zusammenfassung der Methoden zur Konvertierung von Python-Typen

int

Konvertierung in int-Typ unterstützt, nur float, str, bytes, andere Typen Keine werden unterstützt.

float -> int

entfernt den Dezimalpunkt und die folgenden Werte, so dass nur der ganzzahlige Teil übrig bleibt.

int(-12.94)     # -12
Nach dem Login kopieren

str -> int

Wenn die Zeichenfolge andere Zeichen als Zahlen (0-9) und Zeichen (+/-) enthält, wird gemeldet ein Fehler.

int('1209')     # 1209
int('-12')      # -12
int('+1008')    # 1008
Nach dem Login kopieren

Bytes -> int

Wenn in Bytes andere Zeichen als Zahlen (0-9) und Vorzeichen (+/-) vorhanden sind, wird ein Fehler angezeigt berichtet.

int(b'1209')     # 1209
int(b'-12')      # -12
int(b'+1008')    # 1008
Nach dem Login kopieren

float

unterstützt die Konvertierung in den Float-Typ, nur int, str, bytes, andere Typen werden nicht unterstützt.

int -> float

Bei der Konvertierung von int in float wird automatisch eine Dezimalstelle hinzugefügt.

float(-1209)     # -1209.0
Nach dem Login kopieren

str -> float

Wenn die Zeichenfolge positive und negative Vorzeichen (+/-), Zahlen (0-9) und Dezimalpunkte (.) enthält Zeichen, Konvertierung wird nicht unterstützt.

float('-1209')          # -1209.0
float('-0120.29023')    # -120.29023
Nach dem Login kopieren

Bytes -> float

Wenn Bytes etwas anderes als positive und negative Vorzeichen (+/-), Zahlen (0-9) und Dezimalpunkte enthalten ( .) Zeichen, Konvertierung wird nicht unterstützt.

float(b'-1209')         # -1209.0
float(b'-0120.29023')   # -120.29023
Nach dem Login kopieren

komplex

Unterstützt nur die Konvertierung von int, float, str in komplexe Typen.

int -> complex

int Bei der Konvertierung von komplex wird der Imaginärteil automatisch hinzugefügt und durch 0j dargestellt.

complex(12)         # (12+0j)
Nach dem Login kopieren

float -> complex

float Bei der Konvertierung von komplex wird der Imaginärteil automatisch hinzugefügt und durch 0j dargestellt.

complex(-12.09)     # (-12.09+0j)
Nach dem Login kopieren

str -> complex

str Wenn es bei der Konvertierung von komplex in int oder float konvertiert werden kann, wird es konvertiert und dann in komplex konvertiert. Wenn die Zeichenfolge vollständig den Regeln für komplexe Ausdrücke entspricht, kann sie auch in einen komplexen Typwert konvertiert werden. Die Funktion

complex('-12.09')       # (-12.09+0j)
complex('-12.0')       # (-12+0j),去除了小数部分
complex('-12')          # (-12+0j)
complex('-12+9j')       # (-12+9j)
complex('(-12+9j)')     # (-12+9j)
complex('-12.0-2.0j')   # (-12-2j),去除了小数部分
complex('-12.0-2.09j')  # (-12-2.09j)
complex(b'12')          # 报错,不支持 bytes 转换为 complex
complex('12 + 9j')      # 报错,加号两侧不可有空格
Nach dem Login kopieren

str

str() kann jedes Objekt in einen String umwandeln.

int -> str

int Durch das Konvertieren von str wird es direkt vollständig konvertiert.

str(12)     # 12
Nach dem Login kopieren

float -> str

float Beim Konvertieren von str wird der Dezimalteil mit der letzten 0 entfernt.

str(-12.90)     # -12.9
Nach dem Login kopieren

complex -> str

complex-Konvertierung in str wandelt den Wert zunächst in einen standardmäßigen komplexen Ausdruck und dann in eine Zeichenfolge um.

str(complex(12 + 9j))   # (12+9j)
str(complex(12, 9))     # (12+9j)
Nach dem Login kopieren

Bytes -> str

In Python 3.x sind Strings und Bytes nicht mehr völlig unterschiedlich Datentypen.

In eine ausführbare Ausdruckszeichenfolge konvertieren:

  str(b'hello world')        # b'hello world'
Nach dem Login kopieren

str()-Funktion gibt den Codierungsparameter an, oder verwenden Sie die bytes.decode()-Methode, um tatsächliche Daten zu konvertieren:

b'hello world'.decode()       # hello world
str(b'hello world', encoding='utf-8')     # hello world
str(b'\xe4\xb8\xad\xe5\x9b\xbd', encoding='utf-8')  # 中国
Nach dem Login kopieren

list -> str

会先将值格式化为标准的 list 表达式,然后再转换为字符串。

str([])               # []
str([1, 2, 3])          # [1, 2, 3]
''.join(['a', 'b', 'c'])   # abc
Nach dem Login kopieren

tuple -> str

会先将值格式化为标准的 tuple 表达式,然后再转换为字符串。

str(())             # ()
str((1, 2, 3))         # (1, 2, 3)
''.join(('a', 'b', 'c'))   # abc
Nach dem Login kopieren

dict -> str

会先将值格式化为标准的 dict 表达式,然后再转换为字符串。

str({'name': 'hello', 'age': 18})    # {'name': 'hello', 'age': 18}
str({})                     # {}
''.join({'name': 'hello', 'age': 18}) # nameage
Nach dem Login kopieren

set -> str

会先将值格式化为标准的 set 表达式,然后再转换为字符串。

str(set({}))            # set()
str({1, 2, 3})           # {1, 2, 3}
''.join({'a', 'b', 'c'})    # abc
Nach dem Login kopieren

其他类型

转换内置对象:

str(int)    # <class &#39;int&#39;>,转换内置类
str(hex)    # <built-in function hex>,转换内置函数
Nach dem Login kopieren

转换类实例:

class Hello:
    pass
obj = Hello()
print(str(obj))
# <__main__.Hello object at 0x1071c6630>
Nach dem Login kopieren

转换函数:

def hello():
    pass
print(str(hello))
# <function hello at 0x104d5a048>
Nach dem Login kopieren

bytes

仅支持 str 转换为 bytes 类型。

&#39;中国&#39;.encode()                   
# b&#39;\xe4\xb8\xad\xe5\x9b\xbd&#39;bytes(&#39;中国&#39;, encoding=&#39;utf-8&#39;)   
# b&#39;\xe4\xb8\xad\xe5\x9b\xbd&#39;
Nach dem Login kopieren

list

支持转换为 list 的类型,只能是序列,比如:str、tuple、dict、set等。

str -> list

list(&#39;123abc&#39;)      
# [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
Nach dem Login kopieren

bytes -> list

bytes 转换列表,会取每个字节的 ASCII 十进制值并组合成列表

list(b&#39;hello&#39;)      
# [104, 101, 108, 108, 111]
Nach dem Login kopieren

tuple -> list

tuple 转换为 list 比较简单。

list((1, 2, 3))     
# [1, 2, 3]
Nach dem Login kopieren

dict -> list

字典转换列表,会取键名作为列表的值。

list({&#39;name&#39;: &#39;hello&#39;, &#39;age&#39;: 18})  
# [&#39;name&#39;, &#39;age&#39;]
Nach dem Login kopieren

set -> list

集合转换列表,会先去重为标准的集合数值,然后再转换。

list({1, 2, 3, 3, 2, 1})    
# [1, 2, 3]
Nach dem Login kopieren

tuple

与列表一样,支持转换为 tuple 的类型,只能是序列。

str -> tuple

tuple(&#39;中国人&#39;)    
# (&#39;中&#39;, &#39;国&#39;, &#39;人&#39;)
Nach dem Login kopieren

bytes -> tuple

bytes 转换元组,会取每个字节的 ASCII 十进制值并组合成列表。

tuple(b&#39;hello&#39;)     
# (104, 101, 108, 108, 111)
Nach dem Login kopieren

list -> tuple

tuple([1, 2, 3])    
# (1, 2, 3)
Nach dem Login kopieren

dict -> tuple

tuple({&#39;name&#39;: &#39;hello&#39;, &#39;age&#39;: 18})     
# (&#39;name&#39;, &#39;age&#39;)
Nach dem Login kopieren

set -> tuple

tuple({1, 2, 3, 3, 2, 1})
# (1, 2, 3)
Nach dem Login kopieren

dict

str -> dict

使用 json 模块

使用 json 模块转换 JSON 字符串为字典时,需要求完全符合 JSON 规范,尤其注意键和值只能由单引号包裹,否则会报错。

import json
user_info = &#39;{"name": "john", "gender": "male", "age": 28}&#39;
print(json.loads(user_info))
# {&#39;name&#39;: &#39;john&#39;, &#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28}
Nach dem Login kopieren

使用 eval 函数

因为 eval 函数能执行任何符合语法的表达式字符串,所以存在严重的安全问题,不建议。

user_info = "{&#39;name&#39;: &#39;john&#39;, &#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28}"
print(eval(user_info))
# {&#39;name&#39;: &#39;john&#39;, &#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28}
Nach dem Login kopieren

使用 ast.literal_eval 方法

使用 ast.literal_eval 进行转换既不存在使用 json 进行转换的问题,也不存在使用 eval 进行转换的 安全性问题,因此推荐使用 ast.literal_eval。

import ast
user_info = "{&#39;name&#39;: &#39;john&#39;, &#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28}"
user_dict = ast.literal_eval(user_info)
print(user_dict)
# {&#39;name&#39;: &#39;john&#39;, &#39;gender&#39;: &#39;male&#39;, &#39;age&#39;: 28}
Nach dem Login kopieren

list -> dict

通过 zip 将 2 个列表映射为字典:

list1 = [1, 2, 3, 4]
list2 = [1, 2, 3]
print(dict(zip(list1, list2)))
# {1: 1, 2: 2, 3: 3}
Nach dem Login kopieren

将嵌套的列表转换为字典:

li = [
[1, 111],
[2, 222],
[3, 333],
]
print(dict(li))
# {1: 111, 2: 222, 3: 333}
Nach dem Login kopieren

tuple -> dict

通过 zip 将 2 个元组映射为字典:

tp1 = (1, 2, 3)
tp2 = (1, 2, 3, 4)
print(dict(zip(tp1, tp2)))
# {1: 1, 2: 2, 3: 3}
Nach dem Login kopieren

将嵌套的元组转换为字典:

tp = (
(1, 111),
(2, 222),
(3, 333),
)
print(dict(tp))
# {1: 111, 2: 222, 3: 333}
Nach dem Login kopieren

set -> dict

通过 zip 将 2 个集合映射为字典:

set1 = {1, 2, 3}
set2 = {&#39;a&#39;, &#39;b&#39;, &#39;c&#39;}
print(dict(zip(set1, set2)))
# {1: &#39;c&#39;, 2: &#39;a&#39;, 3: &#39;b&#39;}
Nach dem Login kopieren

set

str -> set

先将字符切割成元组,然后再去重转换为集合。

print(set(&#39;hello&#39;))     # {&#39;l&#39;, &#39;o&#39;, &#39;e&#39;, &#39;h&#39;}
Nach dem Login kopieren

bytes -> set

会取每个字节的 ASCII 十进制值并组合成元组,再去重。

set(b&#39;hello&#39;)           # {104, 108, 101, 111}
Nach dem Login kopieren

list -> set

先对列表去重,再转换。

 set([1, 2, 3, 2, 1])    # {1, 2, 3}
Nach dem Login kopieren

tuple -> set

先对列表去重,再转换。

 set((1, 2, 3, 2, 1))    # {1, 2, 3}
Nach dem Login kopieren

dict -> set

会取字典的键名组合成集合。

set({&#39;name&#39;: &#39;hello&#39;, &#39;age&#39;: 18})
# {&#39;age&#39;, &#39;name&#39;}
Nach dem Login kopieren

    

Das obige ist der detaillierte Inhalt vonZusammenfassung der Methoden zur Konvertierung von Python-Typen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage