如果
original = 'MK320MK180FM340SH230LL2HHH22TGF22',
然后我删除了一个字符串列表,看起来像这样(string - > tuple):
list = {('MK320',), ('MK180',), ('FM340',), ('SH230',), ('LL2',), ('HHH22',), ('TGF22',)}
我想摆脱括号内的逗号。也就是说,我想让这些元组再次成为字符串。我做的是:
for i in range(len(list)):
''.join(list[i])
但它没有变得更好。然后我想将它传递给另一个命令,即Counter。然而,实际上包括Counter {(blabla)},我并不喜欢。我希望得到一个字典的结果,看起来像这样:
{('MK320': 1, 'MK180': 1, 'FM340': 1, 'SH230': 1, 'LL2': 1, 'HHH22' : 1, 'TGF22': 1}
最终计算每个产品名称的频率。
答案 0 :(得分:1)
我不知道您是如何将字符串转换为set
tuple
的。{1}}。而且,为什么你甚至在不需要的时候创造它呢?
您可以使用re
模块使用re.findall(pattern, string)
:
>>> import re
>>> my_str = 'MK320MK180FM340SH230LL2HHH22TGF22'
>>> re.findall('[A-Za-z]+\d+', my_str)
['MK320', 'MK180', 'FM340', 'SH230', 'LL2', 'HHH22', 'TGF22']
然后,您可以使用collection.Counter
来计算。例如:
>>> from collections import Counter
>>> word_list = re.findall('[A-Za-z]+\d+', my_str)
>>> Counter(word_list)
Counter({'MK180': 1, 'SH230': 1, 'LL2': 1, 'FM340': 1, 'MK320': 1, 'TGF22': 1, 'HHH22': 1})
答案 1 :(得分:1)
试试这个:
lst = [('MK320',), ('MK180',), ('FM340',), ('SH230',), ('LL2',), ('HHH22',), ('TGF22',)]
lst = [t[0] for t in lst]
答案 2 :(得分:1)
你的original
变量后面有一个逗号,这使得它成为一个元组。如果您希望它是一个字符串,请删除尾随的逗号。
original = 'MK320MK180FM340SH230LL2HHH22TGF22'
您尚未显示如何生成list
变量。 (旁注:不要命名变量list
或str
,它会影响内置类型。)但是您可以将此字符串拆分为单独的部分,如下所示:
import re
original = 'MK320MK180FM340SH230LL2HHH22TGF22'
split_list = re.findall(r'[A-Z]+\d+', original)
您的list
变量实际上是一个集合。集合的语法是{item1, item2, item3}
,而列表的语法是[item1, item2, item3]
。
如果你想把这个集合中的每个元组变成第一个元素:
new_list = [item[0] for item in list]
最后,如果您想计算此列表中每个项目的实例,可以将其传递给collections.Counter
。
import re
import collections
original = 'MK320MK180FM340SH230LL2HHH22TGF22'
split_list = re.findall(r'[A-Z]+\d+', original)
count = collections.Counter(split_list)
答案 3 :(得分:1)
list = {('MK320',), ('MK180',), ('FM340',), ('SH230',), ('LL2',), ('HHH22',), ('TGF22',)}
这是一个集合而不是列表。
请不要将list
用作变量名,因为已经有一个非常有用的内置函数。我假装你把它命名为list1
。
听起来你想要从1元组中提升元素:
list2 = [elt for elt, in list1]
然后您可以根据需要与', '.join(list2)
一起加入。
答案 4 :(得分:0)
你可能有一个错字,或者你做了一些与你所描述的不同的事情。你的list
实际上是一组元组。如果这就是您要创建的内容,那么您就无法使用您在for
循环中显示的索引。鉴于您要显示的所需输出,您也不太清楚自己的目标是什么,因为这不是大括号后带括号的有效语法。
@ Moses-koledoye的答案是正确的,因为你似乎想要的。