gpt4 book ai didi

python - 将字符串拆分为整数部分和字符串部分的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:00 25 4
gpt4 key购买 nike

我有一个像这样的字符串“11547QSD”。我想把它分成两部分“11547”和“QSD”。我得到了 isnumeric() 函数的提示。我正在做一个概述。请给我一个最好的拆分方法。

 str1 = "11547QSD"    # is a valid string (in my context)
str2 = "ABC98765" # is a valid string
str3 = "111ABC111" # is not a valid string

if str1.isvalid():
str1_int = str1.integer_part()
str1_str = str1.string_part()

提前致谢

最佳答案

您可以对命名组使用正则表达式。

您基本上首先创建正则表达式(我为这两种情况创建了两个:首先是数字或首先是字母)。然后检查输入是否匹配。如果是,则对生成的匹配对象调用 groupdict() 以获取类似 {'digits':'11547', 'letters':'QSD'} 的字典。然后你就用它(我打印出来了)。

遵循上述建议的完整示例:

>>> import re
>>> checks = [
re.compile(r'^(?P<digits>\d+)(?P<letters>\D+)$'),
re.compile(r'^(?P<letters>\D+)(?P<digits>\d+)$'),
]
>>> inputs = ['11547QSD', 'ABC98765', '111ABC111']
>>> for item in inputs:
for check in checks:
if check.match(item):
print('Digits are {digits}, letters are {letters}'.format(
**check.search(item).groupdict()
))
break
else:
print('%s is incorrect' % (item,))


Digits are 11547, letters are QSD
Digits are 98765, letters are ABC
111ABC111 is incorrect

简化版

如果你理解上面的内容,你可以缩短代码并像这样创建结果字典(匹配字符串 - 结果组):

>>> from itertools import product
>>> {item: check.search(item).groupdict()
for (item, check) in product(inputs, checks) if check.match(item)}
{'ABC98765': {'digits': '98765', 'letters': 'ABC'},
'11547QSD': {'digits': '11547', 'letters': 'QSD'}}

注意:

我使用了元字符 \d\D。第一个基本上表示“数字”,第二个表示“非数字”。它们的含义的详细信息是 here .

关于python - 将字符串拆分为整数部分和字符串部分的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16953882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com