使列表成为字符串Python

时间:2015-10-08 04:09:59

标签: python list python-3.x

我想将列表数据设为字符串。 我的列表数据如下:

[['data1'],['data2'],['data3']]

我想像这样转换为字符串:

"[data1] [data2] [data3]"

我尝试使用这样的连接:

data=[['data1'],['data2'],['data3']]
list=" ".join(data)

但是得到这样的错误:

  string= " ".join(data)
TypeError: sequence item 0: expected string, list found

有人能帮助我吗?

7 个答案:

答案 0 :(得分:1)

根据您希望输出与样本一致的程度,您有几个选项,按复杂程度的升序显示:

>>> data=[['data1'],['data2'],['data3']]
>>> str(data)
"[['data1'], ['data2'], ['data3']]"
>>> ' '.join(map(str, data))
"['data1'] ['data2'] ['data3']"
>>> ' '.join(map(str, data)).replace("'", '')
'[data1] [data2] [data3]'

请注意,如果您提供的data样本与您的实际数据不符,这些方法可能会产生或不会产生预期效果。

答案 1 :(得分:1)

你尝试过吗?

data=[['data1'],['data2'],['data3']]
t =  map(lambda x : str(x), data)
print(" ".join(t))

现场演示 - https://repl.it/BOaS

答案 2 :(得分:1)

在Python 3.x中,TypeError: sequence item 0: expected string, list found的iterable元素必须是一个字符串。

您收到的错误 - str.join() - 是因为您传递给data的列表元素是列表(因为" ".join(['[{}]'.format(x[0]) for x in data]) 是列表列表)。

如果每个子列表只有一个元素,则只需执行 -

>>> data=[['data1'],['data2'],['data3']]
>>> " ".join(['[{}]'.format(x[0]) for x in data])
'[data1] [data2] [data3]'

演示 -

,

如果子列表可以包含多个元素,并且在输出中,您希望这些多个元素由str.join()分隔。您可以使用" ".join(['[{}]'.format(','.join(x)) for x in data]) 中的列表推导来创建所需的字符串列表。示例 -

','

对于除'<delimiter>'.join(x)以外的其他分隔符,请在 - >>> data=[['data1'],['data2'],['data3']] >>> " ".join(['[{}]'.format(','.join(x)) for x in data]) '[data1] [data2] [data3]' 中使用该分隔符。

演示 -

>>> data=[['data1','data1.1'],['data2'],['data3','data3.1']]
>>> " ".join(['[{}]'.format(','.join(x)) for x in data])
'[data1,data1.1] [data2] [data3,data3.1]'

对于子列表中的多个元素 -

getCurrentTime()

答案 3 :(得分:1)

<!DOCTYPE html>
<html ng-app="myApp" class="{{themeClass}}">
<head lang="en">
    <meta charset="UTF-8">
    <title>Project Title</title>

</head>
<body>
    <nav class="header">
    <ul class="navbar">
        <li>
            <span>Project Name</span>
        </li>               
    </ul>
    </nav>

<div ng-controller="myCtrl">

</div>

</body>
</html>

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope){
    $scope.themeClass = something;
})

答案 4 :(得分:0)

这个怎么样?

data = [['data1'], ['data2'], ['data3']]
result = " ".join('[' + a[0] + ']' for a in data)
print(result)

答案 5 :(得分:0)

这个怎么样:

In [13]: a = [['data1'],['data2'],['data3']]

In [14]: import json

In [15]: temp = " ".join([json.dumps(x) for x in a]).replace("\"", "")

In [16]: temp
Out[16]: '[data1] [data2] [data3]'

答案 6 :(得分:0)

尝试以下方法。这也可以通过“减少”来实现:

from functools import reduce
data = [['data1'], ['data2'], ['data3']]
print(list(reduce(lambda x,y : x+y, data)))

输出:['data1','data2','data3']