说清单(x)= [“12/12/12”,“Jul-23-2017”]
我想计算字母数(在本例中为0)和数字位数(在本例中为6)。
我在迭代for循环时尝试调用Number(<?php echo $e10_durchschnitt_dec; ?>);
和x[i].isalpha()
并且错误被抛出
“TypeError:list indices必须是整数或切片,而不是str”
非常感谢任何帮助!
答案 0 :(得分:4)
您的错误表明您执行了for i in x
(没有意义)或for i in s
(其中s
是x
的元素,一个字符串)。你打算做的是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)