我有一个列表,其中包含整数、浮点数和字符串:
lists = [10, "test", 10.5]
如何将上述列表转换成字符串?我尝试过以下方法:
val = ','.join(lists)
print val
我遇到了以下错误:
sequence item 0: expected string, int found
我该如何解决这个问题?
首先使用str
函数将整数转换为字符串,使用map
函数,然后再使用join
函数连接字符串-
>>> ','.join(map(str,[10,"test",10.5]) )#since added comma inside the single quote output will be comma(,) separated
>>> '10,test,10.5'
或者,如果你想将列表中的每个元素转换为字符串,请尝试以下方法-
>>> map(str,[10,"test",10.5])
>>> ['10', 'test', '10.5']
或者对于内存效率(大数据)可以使用 itertools
>>>from itertools import imap
>>>[i for i in imap(str,[10,"test",10.5])]
>>>['10', 'test', '10.5']
或者简单地使用列表推导式
>>>my_list=['10', 'test', 10.5]
>>>my_string_list=[str(i) for i in my_list]
>>>my_string_list
>>>['10', 'test', '10.5']
imap
不再包含在itertools
中。请改用map
。https://dev59.com/-F0a5IYBdhLWcg3wfIp- - SeaDude最简单的方法是将整个内容发送到 str()
或 repr()
:
>>> lists = [10, "test", 10.5]
>>> str(lists)
"[10, 'test', 10.5]"
repr()
和 str()
在处理 list
对象时可能会有不同结果,这取决于每种类型的对象如何定义。使用 repr()
的意义在于可以将这些字符串发送回 eval()
或 ast.literal_eval()
来获取原始对象:
>>> import ast
>>> lists = [10, "test", 10.5]
>>> ast.literal_eval(repr(lists))
[10, 'test', 10.5]
a = ['b','c','d']
strng = ''
for i in a:
strng +=str(i)
print strng
join
要求元素为string
类型,但你的列表中也有integer
,所以首先你需要将它们转换为字符串类型。>>> lists = [10,"test",10.5]
>>> ",".join(str(x) for x in lists)
您需要将列表中的每个项目作为字符串传递给','.join(sequence)。考虑使用:
val = ','.join([str(item) for item in lists])
打印val。
str(item)
如果已经是str
,则不会改变item
的特点。这个或者TigerhawkT3的解决方案应该被选为最佳答案。 - minsfor i in range(len(lists)):
lists[i] = str(lists[i])
或者,如果您想要创建一个将所有元素连接在一起的字符串,您可以稍微编辑上面的代码。
string_of_lists = ""
for i in lists:
string_of_lists += str(i)
正如你所看到的,这是另一种方法,与使用join的其他解决方案不同。
希望能对你有所帮助!
这也是可能的。这里的x
变量是列表。
>>> '%s'*len(x) % tuple(x)
import functools
lists = [10,"test",10.5]
print(functools.reduce(lambda x,y:x+","+y,list(map(str,lists))))
你总是可以用一些“不正常”的方式来实现:
list_name = ["a", "b", "c"];
string_name = "";
for c in list_name:
string_name += c
print(string_name)
输出:
"abc"
这应该适用于整数、浮点数和字符串,始终将它们转换为字符串类型。
如此处所述
list=['a/b/c', 'd/e/f']
file_list_string= ' '.join(list)
file_list_string= ' '.join(str(file) for file in list)