繁体   English   中英

如何在python中将元组转换为字符串[重复]

[英]How to turn tuple into string in python [duplicate]

如果

original = 'MK320MK180FM340SH230LL2HHH22TGF22',

然后我剥离了一个字符串列表,看起来像这样(字符串->元组):

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}

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

我不知道你是如何的字符串转换为在settuple你有。 而且,为什么在不需要它时甚至还要创建它?

您可以使用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})

尝试这个:

lst = [('MK320',), ('MK180',), ('FM340',), ('SH230',), ('LL2',), ('HHH22',), ('TGF22',)]
lst = [t[0] for t in lst]

您的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)
list = {('MK320',), ('MK180',), ('FM340',), ('SH230',), ('LL2',), ('HHH22',), ('TGF22',)}

那是一个集合而不是一个列表。

请不要使用list作为变量名,因为该名称已经有一个非常有用的内置函数。 我要假装您将其命名为list1

听起来您想从1元组中提升元素:

list2 = [elt for elt, in list1]

然后,您可以根据需要将其与', '.join(list2) join ', '.join(list2)

您可能有错别字,或者所做的事情与所描述的有所不同。 您的list实际上是一组元组。 如果这就是您要创建的内容,则不能使用for循环中显示的索引。 给定您要显示的所需输出,也不太清楚要使用什么,因为花括号后的括号中的语法无效。

鉴于您想要的,@ Moses-koledoye的答案是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM