【问题标题】:Arrays with loops带循环的数组
【发布时间】:2014-03-22 00:32:40
【问题描述】:

我需要能够编写一个程序,该程序获取一个文件,然后返回一个标记数组,然后循环遍历数组,每行打印一个标记,然后删除每个单词的所有标点符号和小写字母,然后计算如何很多次要求的单词出现在整个文件中。问题是我无法返回数组,我不太确定如何制作允许用户输入任何单词或任意数量的单词的数组,然后让程序在文件中搜索以找到这些单词。 ....我花了 8 小时,这就是我目前所拥有的:

import sys
from scanner import *


def main():
    tokens = readTokens("shakespeare.txt")
    for i in range(0,len(tokens),1):
        print(tokens[i])
def readTokens(fileName):
    with open("shakespeare.txt", 'r') as f:
        return f.read().split()
    token = s.readtoken()
    while (token != ""):
        print(token)
        token = s.readtoken()

    s.close()
main()

【问题讨论】:

  • 您对我们有什么期望?写整个程序?
  • 你不是说:print(tokens[**i**]) 而不是 1?
  • 是的,它应该是一个“i”,那时它实际上扫描了文件,不,我不想让任何人写它,我只是不能让它将单词作为数组返回
  • 它一直说全局名称“tokens”未定义
  • 你的意思是你不能让readTokens()函数返回一个数组?考虑python的readlines()函数

标签: python arrays loops token


【解决方案1】:

这是 StackOverflow,因此没有您可以让某人为您编写整个程序...我假设您的问题更多的是关于 如何 解决问题,你正在使用 python

分而治之是你的朋友

  1. 读取文件的行:HereHere
  2. 将行存储到数组中:HereHere
  3. 遍历数组中的每个元素:Here
  4. 检查找到的每个字符串是否包含标点符号:Here
  5. 如果它包含标点符号,请将其删除(这个由您决定)

尝试上述方法并提出更实用的解决方案(您的代码目前看起来您仍在学习某些核心编程思想)。之后,您可以考虑使其更快/更具可读性等。如果您详细说明您的尝试,它将更好地帮助社区。​​p>

【讨论】:

  • LOL 是的,我确实是个菜鸟,但这些步骤确实帮助我找到了正确的轨道,谢谢
  • 很高兴它有帮助:)。一旦你的代码可以工作(或非常接近),你就可以搜索类似的线程来进行代码审查以获取更多技巧[例如,使用正则表达式,使用yield 功能使事情更短,等等]。或者更好的是,使用您所做的更改来编辑此问题以获得更多指导。
【解决方案2】:

这是您读取整个文件并在所有空格处拆分它的方式:

def readTokens(filename):
    with open(filename, 'r') as f:
        return f.read().split()

【讨论】:

  • 我已经知道如何读取文件我只是无法从文件中将单词作为数组返回
  • 是的,就像这样:words = readTokens("somefile.txt"),然后是for word in words:
猜你喜欢
  • 2020-03-02
  • 2011-12-02
  • 2021-03-25
  • 2016-04-21
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多