Python-将字母数字列表分为整数和字符串
我试图操纵一个包含如下数据的csv文件: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] 字母数字字符串应该被分成一个数字和一个字符,然后作为整数和字符串放回数组中。第二步是对所有相同的字符进行聚类并按整
['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我没有注意到他们想要排序结果。我更新了我的答案。好的,谢谢。您的解决方案是创建新列表,还是使用对现有列表的引用?如果是前者,则大型数据集的性能可能会降低。