如何在python中将元组转换为字符串

时间:2017-09-24 21:22:57

标签: python python-3.x

如果

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}

最终计算每个产品名称的频率。

5 个答案:

答案 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变量。 (旁注:不要命名变量liststr,它会影响内置类型。)但是您可以将此字符串拆分为单独的部分,如下所示:

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的答案是正确的,因为你似乎想要的。

相关问题