Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
print(" ".join(list1))
TypeError: sequence item 0: expected str instance, int found
解决方案:
print(" ".join('%s' %id for id in list1))
即遍历list的元素,把他转化成字符串。这样就能成功输出1 two three 4结果了。
原文链接: http://t.csdn.cn/AwUqX
>>>str1 = "abcdefg">>>list1 = list(str1)
>>>print(list1)
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>>str4 = "username=admin&passsword=123456"
>>>list4 = str4.split("&")
>>>print(type(list4))
<class 'list'>
>>>print(list4)
['username=admin', 'passsword=123456']
如果我们要对多个字符进行分割,那么可以使用内置模块 re.split() 方法。
>>>str5 = "username=admin&passsword=123456"
>>>import re
>>>list5 = re.split("&|=", str5)
>>>print(type(list5))
<class 'list'>
>>>print(list5)
['username', 'admin', 'passsword', '123456']
>>>import json
>>>str3 = '["aaa", "bbb", "ccc", "ddd"]'
>>>list3 = json.loads(str3)
>>>print(type(list3))
<class 'list'>
>>>print(list3)
['aaa', 'bbb', 'ccc', 'ddd']
>>>str2 = "['aaa', 'bbb', 'ccc', 'ddd']"
>>>list2 = eval(str2)
>>>print(type(list2))
<class 'list'>
>>>print(list2)
['aaa', 'bbb', 'ccc', 'ddd']
针对str2,json.loads()方法为何失灵了?
因为 json.loads() 将json格式字符串转换为python对象,而按 json 的标准规范应该使用双引号,如果使用单引号会导致报错。
# 注意,转换之后,双引号会变为单引号
>>>list1 = ["aaa", 123, 'ccc', True]
>>>str1 = str(list1)
>>>print(type(str1))
<class 'str'>
>>>print(str1)
['aaa', 123, 'ccc', True]
>>>list3 = ['username=admin', 'passsword=123456']
>>>str3 = "&".join(list3)
>>>print(type(str3))
<class 'str'>
>>>print(str3)
username=admin&passsword=123456
# 这里列表中使用了单引号
>>>list4 = ['username=admin', 'passsword=123456']
>>>import json
>>>str4 = json.dumps(list4)
>>>print(type(str4))
<class 'str'>
>>>print(str4)
["username=admin", "passsword=123456"]
Python3下字典、字符串及列表的相互转换
在Python操作数据内容时,多数情况下可能遇到下面3种类型的数据处理:
hexstring 如:'1C532145697A8B6F'
str 如:'\x1C\x53\x21\x45\x69\x7A\x8B\x6F'
list 如:[0x1C, 0x53, 0x21, 0x45, 0x69, 0x7A, 0x8B, 0x6F]
各种第三方模块(如pyDes),或者自己写的接口中,可能存在由于类型不统一需要在这3种数据中来回切换的情况。
需要用到的核心的方法如下:
list() 将对象转换为list
str() 将对象转换为str
bytearray() 将对象转换为bytearray
bytearray.fromhex() 将对象从hexstring转换为bytearray
binascii.b2a_hex() 将对象从str转换为hexstring
如:[0x53, 0x21, 0x6A] ->'\x53\x21\x6a'
方法:list ->bytearray ->str
如:'\x53\x21\6a' ->[0x53, 0x21, 0x6A]
方法:逐个字符转成十进制
如: [0x53, 0x21, 0x6A] ->'53216A'
方法:list ->bytearray ->str ->hexstring
如: '53216A' ->[0x53, 0x21, 0x6A]
方法:hexstring ->bytearray ->list
如: '53216A' ->'\x53\x21\x6A'
方法:hexstring ->bytearray ->str
以上内容转自: https://blog.csdn.net/diaoxuesong/article/details/72123415#