我做了我想要的事情(拿一个文件,将文字的中间字母洗牌然后重新加入),但由于某种原因,即使我要求它在空格上分割,空格也会被删除。这是为什么?
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 :(得分: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(pattern,string [,maxsplit = 0,flags = 0])
拆分字符串 模式的出现。如果在模式中使用捕获括号, 那么模式中所有组的文本也作为一部分返回 得到的清单。
所以,你可以使用:
import re
re.split("( )", "This is a test")
结果:
['this', ' ', 'is', ' ', 'a', ' ', 'test']