文本分析。 Python初学者

时间:2016-11-12 13:30:06

标签: macos python-3.x parsing io

所以我刚刚开始了很长的python学习方法并遇到了以下问题。 我必须创建一个程序来计算文本中的字符。文本是UTF-8,我必须使用.encoding ='utf-8',但python说'关键字不能表达'并指出'('fn.encoding ='utf-8'之前'。我可以不知道这个。

def count_char(text, char):
count=0
for c in text:
    if c==char:
        count+=1
    return count

fn=input('Enter a filename:')
with open (fn.encoding='utf-8') as f:
    text=f.read()

print(count_char(text,'a'))

2 个答案:

答案 0 :(得分:0)

我通常不会使用编码/解码文件,但我确实搞乱了服务器的编码,据我知道我会这样做。 而不是:

with open (fn.encoding='utf_8') as f:

我愿意:

with open (fn.decode('utf_7') as f:
# your code here.

答案 1 :(得分:0)

这里是第一个回答,请多多关照。如果您想查找 txt 文件中有多少个“a”,请尝试像这样修复您的代码:

def count_char(text, char):
    count=0
    for c in text:
        if c==char:
            count+=1
    return count

fn=input('Enter a filename:')
with open (fn,encoding='utf-8') as f:
    text=f.read()

print(count_char(text,'a'))


正如有人所说,“return”应该缩进在“for”之下,正确的编码方式是(fn, "r", "encoding=utf-8")。这只是一个小的缩进错误,现在它可以工作了!如果您在 if 下缩进返回,则是在告诉代码在退出“if”语句后为您提供与“char”相同的字母数,基本上在第一次检查后破坏了代码在条件下。这就像告诉他只检查文本中的第一个字母。尝试通过用文本中的第一个字符替换“char”来测试这一点,您将看到输出为“1”。请注意,这种方式只能检查小写字母,如果要同时检查小写和大写字母,则必须以不同的方式表示

def count_char(text, char1, char2):
    count=0
    for c in text:
        if c==char1 or c==char2:
            count+=1
    return count

fn=input('Enter a filename:')
with open (fn, encoding='utf-8') as f:
    text=f.read()

print(count_char(text,'a','A'))

我也是 Python 的初学者,我不太确定在这里使用“或”,但它似乎有效!