Python 如何将每个字母从输入文件写入文件?

Python 如何将每个字母从输入文件写入文件?,python,python-3.x,Python,Python 3.x,//我认为代码效率很低,我能提高它的效率吗 def main(): filename = input('Enter filename: ') f = read(filename) out_file = input('Enter file: ') of = out(out_file) 这将打印文件中的每个字母 for line in f: for words in line.split(): for letter in words:

//我认为代码效率很低,我能提高它的效率吗

def main():
    filename = input('Enter filename: ')
    f = read(filename)
    out_file = input('Enter file: ')
    of = out(out_file)

这将打印文件中的每个字母

for line in f:
   for words in line.split():
      for letter in words:

          if (words.isalpha()): 
             of.write(letter.lower())
    of.write('\n')

使用@vishnu upadhyay回答并考虑@vamosnadal123评论:

with open('foo.txt', 'r+') as f:
    a = [l for line in f for l in line if l.isalpha()]
    with open('out_file.txt', 'w') as w:
        for i in a:
            w.write(i.lower()) 
编辑: 如果您还想保留所有空间,您可以写下以下内容,这样更好:

out = open('out_file.txt', 'w')
_ = [w for line in open('foo.txt', 'r') for w in line if w.isalpha() or w=='\n']
out.close()
EDIT2抱歉进行了大量编辑,我认为这是一个更好的解决方案:

out = open('out_file.txt', 'w')
_ = [w for line in open('foo.txt', 'r') for w in line if w.isalpha() or w.isspace()]
out.close()

你想干什么?这里到底有什么问题?@avi我只是想让代码更高效,3个循环似乎很不必要,但我不知道怎么做。代码也是这样工作的。read是一个用于读取文件的模块,out是一个创建输出文件的模块。它将创建一个文件列表,但不会打印它们,也不会将它们保存到文件中。FWIW,我从问题中的第一个代码块中收集到,Vamosnadal123对Python语法并不十分清楚…@PM2Ring我认为更新的代码可以满足您的要求。好的。但是我很确定OP想要输出到另一个文件中,而不是附加到输入文件中。我知道如何将其保存到文件中,但是没有办法只使用一个循环吗?而且我无法按照读取的方式写入行。例如,如果读入文件是一个b(新行)b a,则会将abba写入新文件。
out = open('out_file.txt', 'w')
_ = [''.join([w for w in line if w.isalpha()]) + '\n' for line in open('foo.txt', 'r')]
out.close()