用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码 每个输入字符

如何在python中解析字符串
['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()
。谢谢澄清。