【问题描述】
输入一行字符串,含有数字和非数字字符以及空格等,如:
df23adfd56 2343?23dgjop535
如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。
【输入文件】
从当前目录下的trans.in文件中取得输入。
该文件内只有一行,含有数字和其它任意字符。该行最长含80个字符。
【输出文件】
将输出打印到当前目录下的trans.out文件中。
输出文件第一行为字符串包含的整数个数,第二行依次为各个整数,各整数之间用一个空格分隔。在第二行末也要输出一个回车符。
【输入样例】
df23adfd56 2343?23dgjop535
【输出样例】
5
23 56 2343 23 535
【样例说明】
在字符串df23adfd56 2343?23dgjop535中有5个整数分别是
23 56 2343 23 535
f = open('trans.in')
s = f.readline()
list_str = list(s) # 字符串转为列表
list_result = [] # 创建一个空的结果列表
for i in list_str: # 判断数字
if i.isdigit(): # 是数字储存数字
list_result.append(i)
else: # 不是数字储存空格
list_result.append(' ')
str0 = ''.join(list_result) # 列表转为字符串
list_result = list(str0.split()) # 字符串转为列表
g = open('trans.out', 'a')
g.seek(0)
g.truncate()
t = str(len(list_result)) # 获得列表长度
g.write(t) # 写入第一行
g.write('\n')
count = 0
for i in list_result: # 写入第二行
g.write(str(i))
count += 1
if count < int(t): # 判断添加空格
g.write(' ')
g.write('\n')
f.close()
g.close()