下面应该是一个相当容易的计数/长度需求,但我无法弄清楚如何让它工作......
tl1 = "2, 5, 11"
tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
tl3 = "9382938238"
print len(tl1)
print len(tl2)
print len(tl3)
8
43
1
3
12
1
知道如何实现我想要的回报吗?
感谢
- Hyflex
答案 0 :(得分:2)
你的问题是在
string
中,空格和字符的长度是多少。
所以,这个变量的长度是一个字符串:
string = '123 abc'
是7,因为空间很重要。
现在,要获得您要查找的结果,您需要将字符串更改为列表,该列表是一组逗号分隔值。请注意,我们没有将列表命名为“list”,因为list()
是python中的函数:
lst = ['2','5','11']
现在,当我们检查列表的长度时:
>>> print len(lst)
3
我们得到'3'作为结果
让你的字符串看起来像上面的列表:
>>> tl1 = "2, 5, 11"
>>> print tl1.split(',')
['2','5','11']
然后你可以使用len()
答案 1 :(得分:2)
字符串的长度是字符串中的字符数。
将str.split
与逗号(','
)一起使用:
>>> tl1 = "2, 5, 11"
>>> tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
>>> tl3 = "9382938238"
>>> tl1.split(',')
['2', ' 5', ' 11']
>>> len(tl1.split(','))
3
>>> len(tl2.split(','))
12
>>> len(tl3.split(','))
1
答案 2 :(得分:2)
您可以使用正则表达式轻松完成此操作:
>> import re
>> result = re.split(r'\D+', '1, 2, 35')
>> result
['1', '2', '35']
>> len(result)
3
如果你需要支持浮点数或其他东西,它有点复杂,但正则表达式仍然是可行的方法。
答案 3 :(得分:2)
如果您的所有字符串都是这样的,那么您只需使用字符串的.split
方法:
>>> tl1 = "2, 5, 11"
>>> tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
>>> tl3 = "9382938238"
>>> len(tl1.split())
3
>>> len(tl2.split())
12
>>> len(tl3.split())
1
>>>
.split
默认分割为空格字符。如果数字之间的空格可能超过1,您也可以在,
上拆分。
答案 4 :(得分:2)
这是一种方式:
tl1 = "2, 5, 11"
tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
tl3 = "9382938238"
for t in (tl1,tl2,tl3):
print len([x for x in t.split(',') if x.strip().isdigit()])
打印:
3
12
1
优点是它计算实际整数,而不仅仅是分割项目的数量:
>>> tl4 = '1, 2, a, b, 3, 44' # 4 numbers, 5 commas, 6 items (numbers and letters)
>>> len(tl4.split(','))
6 # that numbers and letters...
>>> len([x for x in tl4.split(',') if x.strip().isdigit()])
4 # integer fields only