E02910: 提取数字
http://cs101.openjudge.cn/practice/02910
输入一个字符串,长度不超过30,内有数字字符和非数字字符,请找出字符串中所有由连续数字字符组成的正整数,并按出现顺序输出。
输入
一个字符串,最大长度为100,不包含空格等空白符。
输出
按出现顺序输出字符串中包含的正整数,每个数字一行,不要输出前导0。保证输入字符串中的正整数均在int范围内。
样例输入
a123*456U17960?302tab5876样例输出
123
456
17960
302
5876来源
计算概论作业2006
⚠️:这个题目的测试数据有输出0,与题面描述输出正整数不一致。
python
def extract_integers(s):
result = []
num = ""
for char in s:
if char.isdigit():
num += char
else:
if num:
result.append(str(int(num)))
num = ""
if num: # Add the last number if any
result.append(str(int(num)))
print("\n".join(result))
# Read input
s = input().strip()
# Extract and output integers
extract_integers(s)使用正则表达式来解决这个问题。通过匹配连续的数字字符,提取出所有的正整数,并按出现顺序输出。
python
import re
# 输入字符串
input_string = input().strip()
# 使用正则表达式匹配连续的数字
numbers = re.findall(r'\d+', input_string)
# 输出所有正整数
for number in numbers:
print(int(number)) # 转换为整数,去掉前导零解释:
re.findall(r'\d+', input_string):这个正则表达式会匹配字符串中所有由连续数字组成的子串。int(number):将匹配到的数字字符串转换为整数,从而去除可能存在的前导零。