我的Python脚本编辑带有函数的txt时出错

时间:2018-01-16 21:17:03

标签: python python-3.x

我基本上应该创建一个python脚本,从我的文件中读取一个名为" myfucntions.py"并让它构建所有标点符号的列表。然后使用list方法从该列表中删除撇号字符。有一个输入要求读取文件名,并为文件中的每一行使用字符串方法使其全部小写并删除任何前导或尾随空格。

我应该使用我在myfunctions中创建的replace_chars函数,使所有内容都小写并删除空格,以及删除撇号字符。然后在使用replace_chars函数后,最后显示修改后的行,前面是使用字符串格式方法的行号。

myfunctions.py:

def replace_chars(stringa, listb):
'''A function to return stringa by removing the list of characters from listb'''
    for x in listb:
        stringa = stringa.replace(x, ' ')
    return stringa
if __name__ == "__main__":
    import test
    test.testEqual(replace_chars(" SamplEam*",["p", "E", "*"]), " Sam l am ")

脚本我到目前为止:

import myfunctions
import string

def main():

    punc = list(string.punctuation)
    punc.remove('\'')
    filename = input('Enter file name to read: ')
    line_num = 1
    with open( filename ) as z:
        for a in z.fileread: 
            a = a.lower()
            a = a.rstrip()
            a = lstrip()
            a = myfunctions.replace_chars(a,punc)
    print("{0}:{1}".format(line_num,a))
    line_num += 1
main()

我的输出是错误:

AttributeError: '_io.TextIOWrapper' object has no attribute 'fileread'

2 个答案:

答案 0 :(得分:1)

错误说明了这一点 - fileread不是python中文件的属性。当你致电for a in z.fileread:时,它失败了,因为那不是一件事。您所寻找的可能是z.readlines()

答案 1 :(得分:0)

我认为您打算将该文件的每一行都读为字符串列表:

for a in x.fileread

错误,因为文件对象没有属性fileread 正确的方法是使用readlines方法将文件转换为字符串列表:

file = open(filname, 'r')
listofstrings = file.readlines()

然后你可以遍历listofstrings