2016-03-18 167 views
0

我一直在用Python中的空格替換「 - 」。我搜索了堆棧溢出並嘗試了下面的代碼,但它沒有做我想要的。Python:將空格替換爲「 - 」

import string 

text1 = ['why-wont-these-dashes-go-away'] 
for i in text1: 
str(i).replace("-", " ") 
print "output 1: " 
print text1 

text2 = ['why-wont-these-dashes-go-away'] 
text2 = [x.strip('-') for x in text2] 
print "output 2: " 
print text2 

text3 = ['why-wont-these-dashes-go-away'] 
text3 = [''.join(c for c in s if c not in string.punctuation) for s in text3] 
print "output 3: " 
print text3 

text4 = ['why-wont-these-dashes-go-away'] 
text4 = [' '.join(c for c in s if c not in string.punctuation) for s in text3] 
print "output 4: " 
print text4 

這裏是我的輸出:

output 1: 
['why-wont-these-dashes-go-away'] 
output 2: 
['why-wont-these-dashes-go-away'] 
output 3: 
['whywontthesedashesgoaway'] 
output 4: 
['w h y w o n t t h e s e d a s h e s g o a w a y'] 

這是我想要的東西:

['why wont there dashes go away'] 

我知道文本1,文本2,和文字3是用一個項目是一個字符串中的每個列表。這可能是我忽略的小事,有什麼想法?

+0

輸出1人如果你重新分配了替換返回值的工作......'strip'只用於結尾字符...其他2個循環字符按字符 –

+0

你正在做幾件事情錯誤。請參閱[官方Python教程](https://docs.python.org/2.7/tutorial/index.html)。 – TigerhawkT3

回答

3

您有以下錯誤:

方法1:您是replace的返回值賦值給任何變量

方法2:帶只剝去字符從字符串開始和結尾

方法3和4:您正在使用空字符串('')或空格(' '),每一個字。

你可以試試這個方法:

text1 = [x.replace('-', ' ') for x in text1] 

或本:

text1 = [' '.join(x.split('-')) for x in text1] 
3

text1是一個列表,列表中有一個元素,它是一個字符串'爲什麼這些破折號會在第0個位置消失'。所以,簡單地使用:

text1 = [text1[0].replace('-',' ')] 

print text1 
['why wont these dashes go away'] 
0

你的第一個例子不工作,因爲鑄造istr使字符串的副本,然後您可以修復。只要做到:

i.replace("-", " ")

你的第二個例子使用strip,這是不是你想要的。

你的第三個和第四個例子消除了破折號,這也是行不通的。

2

你在你的循環正在做的操作對列表中的數據沒有影響,你應該做的,而不是爲創建數據的新名單:

[s.replace('-', ' ') for s in text1] 
0

你['爲什麼-wont-這些破折號']已經是一個列表元素。所以,你只需要做

text1 = ['why-wont-these-dashes-go-away'] 
print text1[0]..replace('-',' ') 
0

你可能分裂的-join

下面的輸出1,您還需要重新分配列表的值

for i,s in enumerate(text1): 
    text1[i] = ' '.join(s.split('-')) 
0
list1 = ['why-wont-these-dashes-go-away', 'a-sentence-with-dashes'] 
list1 = [text.replace('-',' ') for text in list1] 
print list1 

Output: ['why wont these dashes go away', 'a sentence with dashes']