写一个程序,用python实现C语言中的sscanf函数
时间: 2024-02-18 20:03:16 浏览: 129
好的,以下是一个简单的实现:
```python
def sscanf(string, format_string):
result = []
string_index = 0
format_index = 0
while format_index < len(format_string) and string_index < len(string):
if format_string[format_index] == '%':
format_index += 1
if format_string[format_index] == 'd': # 整型
num = ''
while string_index < len(string) and string[string_index].isdigit():
num += string[string_index]
string_index += 1
result.append(int(num))
elif format_string[format_index] == 'f': # 浮点型
num = ''
while string_index < len(string) and (string[string_index].isdigit() or string[string_index] == '.'):
num += string[string_index]
string_index += 1
result.append(float(num))
elif format_string[format_index] == 's': # 字符串
str = ''
while string_index < len(string) and not string[string_index].isspace():
str += string[string_index]
string_index += 1
result.append(str)
else:
raise ValueError('Invalid format string')
else:
if string[string_index] != format_string[format_index]:
raise ValueError('Format string does not match input string')
string_index += 1
format_index += 1
return tuple(result)
```
这个函数接受两个参数:一个字符串和一个格式字符串。它会从字符串中按照格式字符串的指定格式解析出数据,并返回一个元组。支持的格式包括:%d(整型)、%f(浮点型)和%s(字符串)。如果格式字符串不合法或者解析出错,会抛出异常。
阅读全文