计算列表中的数字和字母数量?

时间:2017-07-23 21:38:00

标签: python python-3.x

说清单(x)= [“12/12/12”,“Jul-23-2017”]

我想计算字母数(在本例中为0)和数字位数(在本例中为6)。

我在迭代for循环时尝试调用Number(<?php echo $e10_durchschnitt_dec; ?>);x[i].isalpha()并且错误被抛出

  

“TypeError:list indices必须是整数或切片,而不是str”

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:4)

您的错误表明您执行了for i in x(没有意义)或for i in s(其中sx的元素,一个字符串)。你打算做的是for i in range(len(s))。更好的是c.isalpha() for c in s

答案 1 :(得分:2)

怎么样:

def analyze(s):
    return [sum(n) for n in zip(*((c.isdigit(), c.isalpha()) for c in s))]

strings = ["12/12", "12/12/12", "Jul-23-2017"]

for string in strings:
    print(analyze(string), string)

<强>输出

[4, 0] 12/12
[6, 0] 12/12/12
[6, 3] Jul-23-2017
  

我将第一个和设置为等于一个名为“digits”的变量,第二个和   总和为一个名为“letters”的变量

digits, letters = analyze("Jul-23-2017")

答案 2 :(得分:1)

这是你想要的吗?

function onEdit(e) {

  //create an array of the columns that will be affected
  var allColumns = [2, 10];

  //get the number values of the column and row
  var col = e.range.getColumn();
  var row = e.range.getRow();

  //get the A1 notation of the editted cell for clearing it out
  var cell = e.range.getA1Notation();

  //only run if the cell is in a column in the allColumns array
  if(allColumns.indexOf(col) > -1) {

    //run the for loop for the next 8 cells
    for(var i = col + 1; i < col + 9; i++) {
      SpreadsheetApp.getActiveSheet().getRange(row, i).setValue(e.value);
      SpreadsheetApp.getActiveSheet().getRange(cell).setValue('');
    }
  }
}

答案 3 :(得分:0)

您可以这样做:

def count(L):
  dgt=0
  letters=0
  for s in L:
    for c in s:
      if str(c).isdigit():
        dgt+=1
      elif str(c).isalpha():
        letters+=1
  return (dgt, letters)


>>> count(["12/12/12", "Jul-23-2017"])
#returns (12,3) - There are 12 digits and 3 chars ('J', 'u', 'l')

如果您想为列表中的每个单词打印一个元组,您可以这样做:

def count(L):
  for word in L:
    yield (sum(s.isdigit() for s in word), sum(s.isalpha() for s in word))

for t in count(L):
 print t
#outputs:
(6, 0)
(6, 3)