1

我碰壁了,需要一些帮助。

上下文:我有一个字符串列表。

 Matrix = [['444'],
          ['23%'],
          ['A']]

目前,我们在位置 0 处有一个计数列表,在 1 处有百分比,在 2 处有显着性检验。

列表中的列表数量不时从 3 变为 2 变为 1。并且列表中字符串的类型会改变位置。所以我不能假设索引 0 将始终是 Counts 并且百分比将是 1 等。

因此,我想找到一种方法来动态找出百分比在矩阵中的位置,以及它是否在矩阵中。

这是我到目前为止所写的:

for i, row in enumerate(Matrix):
    for cell in row:
        if "%" in cell:
            percent = i
            print percent
for i, row in enumerate(Matrix):
    for cell in row:            
        if re.search('[a-zA-Z]', cell):
            sigtest = i
            print sigtest
for i, row in enumerate(Matrix):
    for cell in row:
        if re.search('[0-9]', cell):
            count = i
            print count

输出:

1
2
0
1

问题:如您所见,问题出在最后一个 for 循环中,该循环记录了索引 0 和 1 包含数字的事实。

需要什么:最后一个 for 循环仅搜索数字和数字的方法,一个项目包含数字和一个符号,不应包含该索引。

希望这是有道理的!

谢谢

4

1 回答 1

1

要检查字符串是否仅包含数字,您可以使用:

>>> bool(re.search(r'^[0-9]+$', '4444'))
True
>>> '4444'.isdigit()    #Doesn't work for floats
True
# This will work for floats as well
>>> bool(re.search(r'^[0-9]*(\.[0-9]+)?$', '4444.123'))
True
>>> bool(re.search(r'^[0-9]*(\.[0-9]+)?$', '.123'))
True

对于百分比,您可以使用它regex

>>> bool(re.search(r'^[0-9]+%$', '23%'))
True
#To handle floats as well use this:
>>> bool(re.search(r'^[0-9]*(\.[0-9]+)?%$', '23.15%'))
True
>>> bool(re.search(r'^[0-9]*(\.[0-9]+)?%$', '.150%'))
True

对于信号测试:

>>> bool(re.search(r'^[a-z]$', 'a',re.I))
True
>>> bool(re.search(r'^[a-z]$', 'B',re.I))
True

这里^$元字符

^匹配字符串的开头并$匹配字符串的结尾。

于 2013-07-23T11:43:34.443 回答