用Python解析字符串
如何在python中解析字符串用Python解析字符串,python,string-parsing,Python,String Parsing,如何在python中解析字符串['FED590498'],以便分别获得所有数值590498和字符FED 一些样本: ['ICIC889150'] ['FED889150'] ['MFL541606'] 而且[]不是字符串的一部分…如果字母数是可变的,则最容易使用正则表达式: import re characters, numbers = re.search(r'([A-Z]+)(\d+)', inputstring).groups() 这假定: 这些字母是大写的ASCII码 每个输入字符
['FED590498']
,以便分别获得所有数值590498
和字符FED
一些样本:
['ICIC889150']
['FED889150']
['MFL541606']
而且[]不是字符串的一部分…如果字母数是可变的,则最容易使用正则表达式:
import re
characters, numbers = re.search(r'([A-Z]+)(\d+)', inputstring).groups()
这假定:
- 这些字母是大写的ASCII码
- 每个输入字符串中至少有1个字符和1个数字
{3,4}
而不是+
进一步锁定模式,将重复限制为仅3或4次,而不是至少1次,以此类推
演示:
如果字母数是可变的,则最容易使用正则表达式:
import re
characters, numbers = re.search(r'([A-Z]+)(\d+)', inputstring).groups()
这假定:
- 这些字母是大写的ASCII码
- 每个输入字符串中至少有1个字符和1个数字
{3,4}
而不是+
进一步锁定模式,将重复限制为仅3或4次,而不是至少1次,以此类推
演示:
考虑到始终有3或4个字母可供使用的要求:
import re
characters, numbers = re.findall(r'([A-Z]{3,4})(\d+)', 'FED590498')[0]
characters, numbers
#('FED', '590498')
甚至:
ids = ['ICIC889150', 'FED889150', 'MFL541606']
[re.search(r'([A-Z]{3,4})(\d+)', id).groups() for id in ids]
#[('ICIC', '889150'), ('FED', '889150'), ('MFL', '541606')]
根据Martjin的建议,
搜索
是首选方式。考虑到您始终可以使用3或4个字母的要求:
import re
characters, numbers = re.findall(r'([A-Z]{3,4})(\d+)', 'FED590498')[0]
characters, numbers
#('FED', '590498')
甚至:
ids = ['ICIC889150', 'FED889150', 'MFL541606']
[re.search(r'([A-Z]{3,4})(\d+)', id).groups() for id in ids]
#[('ICIC', '889150'), ('FED', '889150'), ('MFL', '541606')]
正如Martjin所建议的,
搜索
是首选方式。这里的模式是什么?总是有3个字符,然后是数字吗?有混音吗?[
,]
括号是字符串的一部分吗?引号是3或4个字符,然后是数字…如果您能为我们提供多个输入示例和每个示例的预期输出,我们实际上可以在这里帮助您。这里的模式是什么?总是有3个字符,然后是数字吗?有混音吗?[
,]
括号是字符串的一部分吗?引号是3或4个字符,然后是数字…如果您能为我们提供多个输入示例和每个示例的预期输出,我们实际上可以在这里帮助您。感谢Martijn PietersOut的好奇,将re.search
与groups
结合使用,或者将re.findall
与[0]
结合使用,更为惯用吗?@Matt:如果输入字符串中存在多个这样的模式是错误的,我会在这里使用re.search()
。感谢您的澄清。感谢Martijn PietersOut的好奇,将re.search
与groups
结合使用,或者将re.findall
与[0]
结合使用,是否更为惯用?@Matt:如果输入字符串中有多个这样的模式是错误的,我会在这里使用re.search()
。谢谢澄清。