我有编码问题请帮我解决问题
问题:
我的python代码应该导入输入文件,以找出它应该出现在文件中的输入文件中每个单词的频率,并按字母顺序将单词写入名为word_frequency.txt的输出文件
代码:
import string
def itm((a1,b1), (a2,b2)):
if b1 > b2:
return - 1
elif b1 == b2:
return cmp(a1, a2)
else:
return 1
def main_cd():
input.txt = raw_input("File to analyze: ")
text = open(input.txt, 'r').read()
text = string.lower(text)
for i in string.punctuation:
text = string.replace(text, i, ' ')
words = string.split(text)
counts = {}
for w in words:
counts[w] = counts.get(w,0) + 1
n = input("Output analysis of how many words? ")
items = counts.items()
items.sort(itm)
for i in range(n):
print "%-10s%5d" % items[i]
if __name__ == '__main__': main_cd()
问题:
要分析的文件:input.txt Traceback(最近一次调用最后一次): 第38行,在 如果名称 =='主要':main_cd() 第19行,在main_cd中 input.txt = raw_input(“要分析的文件:”) AttributeError:'builtin_function_or_method'对象没有属性'txt'
使用退出代码1完成处理
答案 0 :(得分:4)
您无法使用.
(input.txt
)为变量命名。这样做:
file_name = raw_input("File to analyze: ")
text = open(file_name, 'r').read()
注意:最好在阅读完文件后关闭该文件。这是一个更好的习惯:
file_name = raw_input("File to analyze: ")
with open(file_name, 'r') as f:
text = f.read()
此处,with
语句上下文管理器将在您完成with
块代码后立即自动关闭文件。
答案 1 :(得分:1)
从输入变量中删除.text:
input_txt = raw_input("File to analyze: ")
text = open(input_txt, 'r').read()