假设我有以下字符串:
A12B2C6
我想提取一个向量的数字和另一个向量的字符,这样输出是:
['12', '2', '6']
['A', 'B', 'C']
我尝试使用以下代码执行此操作:
string = input()
digits = []
characters = []
for c in range(len(string)-1):
if string[c].isdigit():
if string[c].isdigit() and string[c + 1].isdigit():
digits.append(string[c] + string[c + 1])
else:
digits.append(string[c])
else:
characters.append(string[c])
print(digits)
print(characters)
但出口是:
['12', '2', '2']
['A', 'B', 'C']
类似于这样的东西可以从您的代码中工作:
还可以使用set()删除重复项
您的代码有两个问题:
c == 1
您追加12
时,当c == 2
您追加2
时。它不是真的复制数字;这只是巧合,在B
之后的2
与在12
之后的A
中的2
是相同的李>for c in range(len(string)-1):
表示从不处理字符串中的最后一个字符;这就是为什么结果中没有6
。它应该是range(len(string))
,但是您需要专门处理c == len(string)-1
,这样您就不会试图使用string[c+1]
李>您可以通过使用
while
循环而不是for
来解决第一个问题,因此在处理2位数字时可以将c
增加两次但使用正则表达式更简单:
其他人已经指出了这个问题,但这里是一个应该产生正确结果的实现
编辑:我假设反对票来自那些喜欢正则表达式解决方案的人。正则表达式的解决方案很好,但OP可能也有兴趣看到一些与他们的尝试相同的东西
相关问题 更多 >
编程相关推荐