【问题标题】:reading/count character in the line?读取/计数行中的字符?
【发布时间】:2012-07-30 19:27:07
【问题描述】:

我正在尝试读取/计算文件中的字符(位于第 2 行)

文件的所有偶数行看起来都类似于:

---------------LL---NE--HVKTHTEEK---PF-ICTVCR-KS----------

到目前为止,这是我的代码,但我收到错误消息:

对于 len[(line2)] 中的字符: TypeError: 'builtin_function_or_method' 对象不可下标

 with open(filename) as f:
    for line, line2 in itertools.izip_longest(f, f, fillvalue=''):
        tokenizer=line.split()
        print line, line2
        print tokenizer[4]
        for character in len[(line2)]:
           print 't'

【问题讨论】:

    标签: python count character


    【解决方案1】:

    问题在于len 是一个内置函数(len(mystring) 返回一个整数,它是字符串中的字符数)。您不能为其下标(即使用方括号将导致您在问题中引用的 TypeError )。我不太确定你想在这里做什么,也许你想要:

     for character in line2:
         print character
    

    或者你可能想要:

     for i,character in enumerate(line2):
         print i,character
    

    从 cmets 中,我仍然很难找到你想要的东西,但我认为你可能想要这样的东西:

    tokenizer = line.replace('-',' ').split()[4]
    idx = line.index(tokenizer)
    count = line[:idx].count('-')
    

    【讨论】:

    • 我想用它来计算字母表,不包括和包括'-'
    • @ChadD -- 这是意料之中的。你想用你的 for 循环来完成什么?
    • 文件中有多行,所以偶数行看起来与我发布的相似。所以 tokenize[4] 中的数字是原始位置,不包括“-”我想知道它的新位置,有时可能在字符前面或中间有“-”
    • 那么,您想知道该行第一个非- 字符的索引吗?
    • 我的问题是“为什么?” - 你需要什么结果?
    【解决方案2】:

    line2 是一个字符串,len(line2) 是一个整数(line2 中的字符数)。方括号用于索引(或切片)序列,因此例如您可以使用line2[0] 获取line2 的第一个字符,或者使用line2[-1] 获取最后一个字符。

    len 内置函数不是序列,这就是为什么在它之后使用方括号会导致您看到的错误。

    您可以使用for 循环进行迭代,但您必须循环遍历可迭代的内容。你不能迭代一个整数,所以for character in len(line2): 也会失败。

    请改用以下方法之一:

    # loop over each character in the string
    for character in line2:
        ...
    
    # loop over [0, 1, ..., len(line2)-1]
    for i in range(len(line2)):
        ...
    
    # combination of above methods, i will be the index of character in the string
    for i, character in enumerate(line2):
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多