2012-09-17 50 views
221

是否有將列表中的字符串項連接成單個字符串的更簡單的方法?將列表中的項連接到字符串

我可以使用str.join()函數來連接列表中的項目嗎?

E.g.這是輸入['this','is','a','sentence'],這是所需的輸出this-is-a-sentence

sentence = ['this','is','a','sentence'] 
sent_str = "" 
for i in sentence: 
    sent_str += str(i) + "-" 
sent_str = sent_str[:-1] 
print sent_str 
+9

''''join(句子)' – aland

回答

461

使用join

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

不明白,左邊的' - '是什麼意思? –

+4

@LawrenceDeSouza你想加入的字符串;請參閱[文檔](https://docs.python.org/2/library/stdtypes.html#string-methods)或[此答案](http://stackoverflow.com/questions/1876191/explain-python加入)進入更多的細節。 –

+1

我預計'sentence.join(「」)'也可以工作,因爲反向操作是'list.split(「」)'。任何想法,如果這將被添加到Python的列表方法? –

7

雖然@Burhan Khalid's answer是不錯的,我覺得它更容易理解是這樣的:

from str import join 

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

join(sentence, "-") 

的join()的第二個參數是可選的,默認爲「」。

編輯:Python中,刪除了此功能3

+6

[此函數在2.x中已被棄用,並將在3.x中被刪除](https://docs.python.org/2/library/string.html#deprecated-string-functions)情況就是如此,我不會推薦使用這個提供的其他答案。 –

+0

@Mathew Green這個答案和Burhan Khalid的答案以不同的方式使用相同的函數,所以他的答案也被棄用。但感謝您指出了這一點,找出瞭如何加入3.x.但是如果你使用2.x,它不會消失。 – SilentVoid

+1

雖然他沒有被棄用。你的建議使用Lib/string.py中的一個函數,它完全不同於_and_棄用,而@BurhanKhalid答案使用內置的字符串方法,這個方法不被棄用。他的回答是現在和未來的最正確的答案,而現在只適用於2.x。 –

57

一個更通用的方法,以Python列表轉換爲字符串將是:

>>> 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' 
+1

爲什麼輸入字符串時需要列表理解?如果沒有枚舉列表,也可以使用'map(str,my_lst)'= – alvas

+4

這個問題的大部分答案都是考慮列表中包含字符串的情況。 Mine是將列表轉換爲字符串的通用方法。在我的例子中,列表的類型是'int',但它可以是任何可以表示爲字符串的類型。 –

+0

@alvas謝謝,更新了我的答案。 –

15

這是非常有用的初學者知道 why join is a string method

開始時非常奇怪,但在此之後非常有用。

連接的結果始終是一個字符串,但對象要加入可以有多種類型(發電機,列表,元組等)

.join是更快,因爲它分配內存只有一次的。比經典連接更好。 extended explanation

一旦你瞭解它,這是非常舒適的,你可以做這樣的技巧來添加圓括號。

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

    >>> lista=["(",")"] 
    >>> ",".join("12345").join(lista) 
    '(1,2,3,4,5)' 
+0

哇,酷。有我的upvote :) – Blacksilver