仅从文件中读取str对象

时间:2015-05-06 10:49:58

标签: python random readfile

因此,在处理我的程序时,我正在尝试读取文件,将所有包含的信息带回来。另一个函数拆分列表,随机生成一个包含的字符串。如果它不是字符串,请再试一次。

不幸的是,我的程序在执行此操作时翻了出来,完全拒绝服从或只是给我一个错误,或者是的,甩掉了。

所以现在我正在寻找一种只读取字符串对象的方法,所以我可以跳过整个部分,检查它是不是整数。

import random
from random import randrange
def readfile(file):
    try:
        f = open(file, 'r')
        fil = f.readlines()
        f.close()
        return fil
    except IOError:
        print('fil finns inte')
        return None

def chooseword(lista):
    while True:
        lista = random.choice(lista)
        ordet = lista.split()
        x = randrange(len(ordet))
        ord = ordet[x]
        try:
            if ord.isalpha:
                return ord
        except:
            print("none")

print(chooseword(readfile("file.txt")))

我尝试过使用random.choice而不是randrange,这没什么区别。

那么,我怎么会前进只导入像单词这样的字符串对象,例如:Banan而不是123或¤%&。

由于

由于

1 个答案:

答案 0 :(得分:2)

您的代码中存在很多错误。最明显的问题出在chooseword函数中。如果您读取的第一个字符串不是字母字符串,则会有一个无限循环,因为您使用随机元素的值覆盖lista,因此,当您再次迭代循环时,您将阅读相同的元素一遍又一遍,永远不会退出循环。

检查字符串是否只包含字母是函数调用,因此您必须调用.isalpha()。另外,如果你点击一个非alpha字符串,那么我怀疑你期望达到except(比如说快5倍))并打印'none' ......你的代码永远不会发生。只需使用if, else条件。

您的固定代码:

import random
from random import randrange
_file = file

def readfile(file):
    with open(file, 'rb') as f:
        try:
            return f.readlines()
        except:
            print('fil finns inte')    # not sure what your trying to catch here

def chooseword(lista):
    while True:
        dont_overwrite_lista = random.choice(lista)
        ordet = dont_overwrite_lista.split()
        x = randrange(len(ordet))
        ord = ordet[x]
        if ord.isalpha():
            return ord
        else:
            print('none')


print(chooseword(readfile("file.txt")))

PS

这是罕见的代码"拒绝服从" )。记住计算机是愚蠢的,完全按照我们的要求去做。