Python-将字母数字列表分为整数和字符串

Python-将字母数字列表分为整数和字符串,python,regex,list,Python,Regex,List,我试图操纵一个包含如下数据的csv文件: ['193T','4234234234'],['30T','54353456346'],['203K','4234234234'],['19E','4234234234'] [19,'E',4234234234],[203,'K',4234234234],[30,'T',54353456346],[193,'T',4234234234] 字母数字字符串应该被分成一个数字和一个字符,然后作为整数和字符串放回数组中。第二步是对所有相同的字符进行聚类并按整

我试图操纵一个包含如下数据的csv文件:

['193T','4234234234'],['30T','54353456346'],['203K','4234234234'],['19E','4234234234']
[19,'E',4234234234],[203,'K',4234234234],[30,'T',54353456346],[193,'T',4234234234]
字母数字字符串应该被分成一个数字和一个字符,然后作为整数和字符串放回数组中。第二步是对所有相同的字符进行聚类并按整数排序

结果是这样的:

['193T','4234234234'],['30T','54353456346'],['203K','4234234234'],['19E','4234234234']
[19,'E',4234234234],[203,'K',4234234234],[30,'T',54353456346],[193,'T',4234234234]
我希望你能理解它背后的思想

非常感谢您事先的帮助

l = [['193T','4234234234'],
     ['30T','54353456346'],
     ['203K','4234234234'],
     ['19E','4234234234']]

# Using a list comprehension
[[int(i[0][:-1]), i[0][-1], int(i[1])] for i in l]
输出

[[193, 'T', 4234234234],
 [30, 'T', 54353456346],
 [203, 'K', 4234234234],
 [19, 'E', 4234234234]]
[[19, 'E', 4234234234L],
 [203, 'K', 4234234234L],
 [193, 'T', 4234234234L],
 [30, 'T', 54353456346L]]
然后可以使用第二个元素作为键进行排序

输出

[[193, 'T', 4234234234],
 [30, 'T', 54353456346],
 [203, 'K', 4234234234],
 [19, 'E', 4234234234]]
[[19, 'E', 4234234234L],
 [203, 'K', 4234234234L],
 [193, 'T', 4234234234L],
 [30, 'T', 54353456346L]]

如果字母字符始终位于字符串的末尾,则可以使用:

>>> entries = (['193T','4234234234'],['30T','54353456346'],['203K','4234234234'],['19E','4234234234'])
>>> entries = tuple([int(entry[0][:-1]), entry[0][-1], entry[1]] for entry in entries)
>>> print entries
([193, 'T', '4234234234'], [30, 'T', '54353456346'], [203, 'K', '4234234234'], [19, 'E', '4234234234'])

字母字符总是在字母数字字符串的末尾吗?对我来说,这似乎不是一个正则表达式问题,因为您能够精确地寻址每个标记,即最后一个字符a[-1],以及除最后一个字符a[:-1]之外的所有字符。不需要搜索模式。是的,字符总是在末尾,所以可能归结为th-1solution@Rishi我没有注意到他们想要排序结果。我更新了我的答案。好的,谢谢。您的解决方案是创建新列表,还是使用对现有列表的引用?如果是前者,则大型数据集的性能可能会降低。