将Python脚本的结果写入txt-fi

2024-04-25 03:59:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了以下脚本,该脚本用于查找包含两个或更多元音的单词,并将结果输出到txt文件。脚本当前正在运行,但输出文件为空。我尝试了几种不同的方法都没有用,知道为什么输出文件是空的吗?我使用(重新)导入将输入视为正则表达式。在

#!C:\Python33\python.exe

import re

file = open("Text of Steve Jobs' Commencement address (2005).htm");
output = open('twoVoweledWordList.txt', 'w');

for word in file.read():
   if len(re.findall('[aeiouy]', word)) >= 2:
      match == True;
      while True :
        output.write(word, '\n');

        file.close()
        output.close()

Tags: 文件方法retxt脚本truecloseoutput
3条回答

你要求一次读一个单词的更好的方法。给你:

with open(input_file_name, "rt") as f:
    for line in f:
        for word in line.split():
            # do something with each word here

评论:

  • 一般来说,我尽量避免使用内置的Python特性作为变量名。由于file是Python2.x中的内置,语法着色文本编辑器将用不同的颜色标记它。。。也可以使用f作为变量名。在
  • 最好使用with语句。这一点非常清楚,在Python的所有版本中,它确保在完成操作时正确关闭文件。(这里不重要,但这确实是一种最佳实践。)
  • open()返回可在for循环中使用的对象。您将一次从文件中获得一行输入。在
  • line.split()使用任何“空白”(空格、制表符等)将行拆分为单词

我不知道您是否见过生成器函数,但您可以将上面的双重嵌套for循环打包成这样的生成器函数:

^{pr2}$

我喜欢把机器藏起来。如果你想让分词变得更复杂,复杂的部分和实际处理单词的部分很好地分开了。在

虽然史蒂芬说得很好,但万一你更喜欢for循环:

import re

file = open("Text of Steve Jobs' Commencement address (2005).htm")
output = open('twoVoweledWordList.txt', 'w')

for line in file:
    for word in line.split():
       if len(re.findall('[aeiouy]', word)) >= 2:
          output.write(word + '\n')

使用with语句时,不必担心显式关闭文件。我相信y不是元音。所以,我把它从我的答案中删除了。在

import re

with open("Input.txt") as inputFile, open("Output.txt", "w") as output:
    for line in inputFile:
        for word in line.split():
            if len(re.findall('[aeiou]', word)) >= 2:
                output.write(word + '\n')

相关问题 更多 >