如何将列表中的项目连接(连接)为单个字符串

2024-11-19 08:38:00
admin
原创
142
摘要:问题描述:如何将一串字符串连接成一个字符串?例如,给定['this', 'is', 'a', 'sentence'],我如何获得"this-is-a-sentence"?有关在单独的变量中处理几个字符串,请参阅如何在 Python 中将一个字符串附加到另一个字符串?。对于相反的过程(从字符...

问题描述:

如何将一串字符串连接成一个字符串?

例如,给定['this', 'is', 'a', 'sentence'],我如何获得"this-is-a-sentence"


有关在单独的变量中处理几个字符串,请参阅如何在 Python 中将一个字符串附加到另一个字符串?。

对于相反的过程(从字符串创建列表),请参阅如何将字符串拆分为字符列表?或如何将字符串拆分为单词列表?(视情况而定)。


解决方案 1:

使用str.join

>>> words = ['this', 'is', 'a', 'sentence']
>>> '-'.join(words)
'this-is-a-sentence'
>>> ' '.join(words)
'this is a sentence'

解决方案 2:

将列表转换为字符串的更通用的方法(也包括数字列表)是:

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)
12345678910

解决方案 3:

对于初学者来说,了解
为什么 join 是一个字符串方法是非常有用的。

一开始很奇怪,但之后就非常有用了。

连接的结果始终是一个字符串,但要连接的对象可以是多种类型(生成器、列表、元组等)。

.join速度更快,因为它仅分配一次内存。比传统串联更好(请参阅扩展解释)。

一旦你学会了它,它就会非常舒服,你可以用这样的技巧来添加括号。

>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'

解决方案 4:

>>> list_abc = ['aaa', 'bbb', 'ccc']

>>> string = ''.join(list_abc)
>>> print(string)
aaabbbccc

>>> string = ','.join(list_abc)
>>> print(string)
aaa,bbb,ccc

>>> string = '-'.join(list_abc)
>>> print(string)
aaa-bbb-ccc

>>> string = '
'.join(list_abc)
>>> print(string)
aaa
bbb
ccc

解决方案 5:

从未来编辑:请不要使用下面的答案。此功能已在 Python 3 中删除,Python 2 已失效。即使您仍在使用 Python 2,也应该编写 Python 3 就绪代码,以使不可避免的升级更容易。


虽然@Burhan Khalid 的回答很好,但我认为这样更容易理解:

from str import join

sentence = ['this','is','a','sentence']

join(sentence, "-") 

join() 的第二个参数是可选的,默认为“ ”。

解决方案 6:

我们也可以使用Python的reduce函数:

from functools import reduce

sentence = ['this','is','a','sentence']
out_str = str(reduce(lambda x,y: x+"-"+y, sentence))
print(out_str)

解决方案 7:

我们可以指定如何连接字符串。'-'我们可以使用来代替' '

sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)

解决方案 8:

如果您有一个混合内容列表并想要对其进行字符串化,这里有一种方法:

考虑一下这个列表:

>>> aa
[None, 10, 'hello']

将其转换为字符串:

>>> st = ', '.join(map(str, map(lambda x: f'"{x}"' if isinstance(x, str) else x, aa)))
>>> st = '[' + st + ']'
>>> st
'[None, 10, "hello"]'

如果需要,转换回列表:

>>> ast.literal_eval(st)
[None, 10, 'hello']

解决方案 9:

还可以通过str.format()解包列表来连接列表中的值format(),将值按顺序插入占位符中。它也可以处理非字符串。

lst1 = ['this', 'is', 'a', 'sentence']
lst2 = ['numbers', 1, 2, 3]
'{}-{}-{}-{}'.format(*lst1)       # 'this-is-a-sentence'
'{} {}, {} and {}'.format(*lst2)  # 'numbers 1, 2 and 3'

对于大型列表,我们可以使用列表的长度来初始化适当数量的占位符。可以使用以下两种方法之一来实现这一点:

* ```
('{}, '*len(lst)).rstrip(', ').format(*lst)

一个工作示例:

lst = [1.2345, 3.4567, 4.567, 5.6789, 7.8]
', '.join(['{}']*len(lst)).format(*lst)      # '1.2345, 3.4567, 4.567, 5.6789, 7.8'
('{}, '*len(lst)).format(*lst).rstrip(', ')

# with a float format specification
', '.join(['{:.2f}']*len(lst)).format(*lst)  # '1.23, 3.46, 4.57, 5.68, 7.80'

解决方案 10:

如果您想在最终结果中生成一串用逗号分隔的字符串,您可以使用如下方法:

sentence = ['this','is','a','sentence']
sentences_strings = "'" + "','".join(sentence) + "'"
print (sentences_strings) # you will get "'this','is','a','sentence'"

解决方案 11:

def eggs(someParameter):
    del spam[3]
    someParameter.insert(3, ' and cats.')


spam = ['apples', 'bananas', 'tofu', 'cats']
eggs(spam)
spam =(','.join(spam))
print(spam)

解决方案 12:

如果没有 .join() 方法,您可以使用此方法:

my_list=["this","is","a","sentence"]

concenated_string=""
for string in range(len(my_list)):
    if string == len(my_list)-1:
        concenated_string+=my_list[string]
    else:
        concenated_string+=f'{my_list[string]}-'
print([concenated_string])
    >>> ['this-is-a-sentence']

因此,在此示例中,基于范围的 for 循环,当 Python 到达列表的最后一个单词时,它不应该将“-”添加到 concenated_string。如果它不是字符串的最后一个单词,则始终将“-”字符串附加到 concenated_string 变量。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1259  
  IPD(Integrated Product Development)流程管理作为一种先进的产品开发管理理念和方法,在提升企业创新能力方面发挥着至关重要的作用。它打破了传统产品开发过程中部门之间的壁垒,通过整合资源、优化流程,实现产品的快速、高效开发,为企业在激烈的市场竞争中赢得优势。IPD流程管理的核心概念IPD流程...
IPD流程中PDCP是什么意思   11  
  IPD(Integrated Product Development)流程管理作为一种先进的产品开发管理模式,旨在通过整合各种资源,实现产品的高效、高质量开发。在这一过程中,团队协作无疑是成功的关键。有效的团队协作能够打破部门壁垒,促进信息共享,提升决策效率,从而确保产品开发项目顺利推进。接下来,我们将深入探讨IPD流...
IPD培训课程   9  
  IPD(Integrated Product Development)研发管理体系作为一种先进的产品开发理念和方法,在众多企业中得到了广泛应用。它旨在打破部门壁垒,整合资源,实现产品开发的高效、协同与创新。在项目周期方面,IPD研发管理体系有着深远且多维度的影响,深入剖析这些影响,对于企业优化产品开发流程、提升市场竞争...
华为IPD流程   11  
  IPD(Integrated Product Development)流程管理是一种先进的产品开发管理模式,旨在通过整合企业的各种资源,实现产品的高效、高质量开发。它涵盖了从产品概念提出到产品退市的整个生命周期,对企业的发展具有至关重要的意义。接下来将详细阐述IPD流程管理的五个阶段及其重要性。概念阶段概念阶段是IPD...
IPD概念阶段   12  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用