2013-10-13 29 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