2013-10-13 30 views
0

我有這樣做我想要它(拿一個文件,洗牌的中間字母和重新加入他們),但由於某種原因,即使我要求它分割空間的空間被刪除。這是爲什麼?刪除空格的Python拆分方法....爲什麼?

import random 

File_input= str(input("Enter file name here:")) 

text_file=None 
try: 
    text_file = open(File_input) 
except FileNotFoundError: 
    print ("Please check file name.") 



if text_file:    
    for line in text_file: 
     for word in line.split(' '): 
      words=list (word) 
      Internal = words[1:-1] 
      random.shuffle(Internal) 
      words[1:-1]=Internal 
      Shuffled=' '.join(words) 
      print (Shuffled, end='') 
+0

這是split'的'性質。分隔符被視爲不需要的分隔符並丟棄。 – Joseph

+0

那麼有沒有辦法保持它? – Nick

+0

查看我提供的答案,它顯示了兩種方法,具體取決於您要查找哪種結果列表。 – Joseph

回答

1

如果你想使用分隔符作爲值的一部分:

d = " " #delim 
line = "This is a test" #string to split, would be `line` for you 
words = [e+d for e in line.split(d) if e != ""] 

這樣做是分割字符串,但返回分割值加上使用的分隔符。結果仍然是一個列表,在這種情況下爲['This ', 'is ', 'a ', 'test ']

如果要將分隔符作爲結果列表的一部分,而不是使用常規str.split(),則可以使用re.split()。該文檔注意:

re.split(圖案,字符串[,maxsplit = 0,標誌= 0])
由 發生圖案的分割字符串。如果在模式中使用捕獲圓括號 ,則模式中所有組的文本也會作爲結果列表的部分 返回。

所以,你可以使用:

import re 
re.split("()", "This is a test") 

而且結果: ['this', ' ', 'is', ' ', 'a', ' ', 'test']

+0

嗯,我認爲它的工作原理...而不是在re.split中放置一個字符串,有什麼辦法把變量?因爲它似乎沒有re.split與變量一起使用。 – Nick

+0

在這裏可以正常使用變量:http://ideone.com/WvNVuG如果您在re.split時遇到問題,無法用剛剛鏈接的代碼弄清楚,請嘗試提出新問題。 – Joseph