我想创建一个打印用户编写的句子的程序,并将其垂直打印到文件中。我目前的代码是:
# Create a program that takes sentence from user, and splits
# the words into a list.
# Then write the list into a a file vertically.
# Take sentence from user
sentence = raw_input('Write a sentence :')
# Split the words of sentence
splited = str(sentence.split())
print splited
# Write to file
f=open('C:\Users\QamarAli\Desktop\HelloFile.txt', 'w')
for i in range(len(splited)):
f.writelines(splited)
f.writelines("\n")
f.close()
如果我输入句子Hi i am aFAFAF
,则文本文件的内容为:
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
[u'Hi', u'i', u'am', u'aFAFAF']
而我希望它是
Hi i am aFAFAF
答案 0 :(得分:3)
就像
一样简单f.write('\n'.join(sentence.split()))
甚至无需创建splited
变量(如果您愿意,您甚至可以删除sentence
变量:f.write('\n'.join(raw_input().split()))
)。
如果你想坚持for
循环,你可能想做这样的事情:
splited = sentence.split() # notice no `str`
for i in range(len(splited)):
f.write(splited[i])
f.write('\n')
或更简单:
for s in sentence.split():
f.write(s + '\n')
请注意,此方法将始终保留尾随换行符,而f.write('\n'.join(sentence.split()))
则不会。如果需要,可以使用
f.write('\n'.join(sentence.split()) + '\n')
答案 1 :(得分:2)
您正在将列表“打印”到文件中,而您应该遍历列表。
# your code. get rid of your own for loop and replace it with this one
for part in splited:
#this is the part which I am talking about
f.writelines(part)
f.writelines("\n")
# your code
答案 2 :(得分:2)
好的,如果您愿意,我会解释错误,而不是提供代码高尔夫风格的答案!
splited = str(sentence.split())
您不应将所有内容转换为字符串,split()会返回list
,因此请将其保留为单词列表:
words = sentence.split()
接下来,你的循环错了:
for i in range(len()):
您选择的是for i in range(len(words))
,但您可以for word in words:
所以你可以试试:
for word in sentence.split():
f.write(word + '\n')