我想知道Python中是否有一个函数可以从用户那里获取格式化scanf()
输入,类似于在'C'中使用和格式化字符串(例如%d
,%lf
等)从用户那里获取输入。
scanf()
返回 a的假设示例list
:
input_date_list = scanf("%d-%d-%d")
# User enters "1969-04-20"
input_time_list = scanf("%d:%d")
# User enters "04:20"
print(input_date_list, input_time_list)
# Output is "[1969, 4, 20] [4, 20]"
Run Code Online (Sandbox Code Playgroud)
标准库中没有直接等效的 scanf(3)。该re
模块的文档建议将其本身作为替代品,并提供以下解释:
Python 目前没有与 scanf() 等效的函数。正则表达式通常比 scanf() 格式字符串更强大,但也更冗长。下表提供了 scanf() 格式标记和正则表达式之间的一些或多或少等效的映射。
修改你的假设示例,使用正则表达式,我们得到......
import re
input_date_list = re.match(r"(?P<month>[-+]?\d+)-(?P<day>[-+]?\d+)-(?P<year>[-+]?\d+)", input())
print(f"[{input_date_list['year']}, {input_date_list['month']}, {input_date_list['day']}]")
input_time_list = re.match(r"(?P<hour>[-+]?\d+):(?P<minute>[-+]?\d+)", input())
print(f"[{input_time_list['hour']}, {input_time_list['minute']}]")
Run Code Online (Sandbox Code Playgroud)
...执行时:
python script.py << EOF
1-2-2023
11:59
EOF
[2023, 1, 2]
[11, 59]
Run Code Online (Sandbox Code Playgroud)
Pypi 上的scanf 模块提供了一个更类似于 scanf(3) 的接口。
这提供了您的假设示例的直接实现:
from scanf import scanf
input_date_list = scanf("%d-%d-%d")
input_time_list = scanf("%d:%d")
print(input_date_list, input_time_list)
Run Code Online (Sandbox Code Playgroud)
...执行时:
python script.py << EOF
1-2-2023
11:59
EOF
(1, 2, 2023) (11, 59)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66391 次 |
最近记录: |