[英]Convert double tuple to string
我想转换双元组,如下所示:
{tuple} <type 'list'>: ((u'833',), (u'765',) ,
(u'11',) , (u'56',) , (u'61',) , (u'84',) )
到这个字符串:
"833, 765, 11, 56, 61, 84"
我这样尝试:
query = double_tuple_from_above
str = ["'{}' ".format(element) for element in query ]
final_str = ', '.join(str)
# aaaa = steamids64.replace("(", "',)") # does not work
但是结果看起来无论哪种方式都不正确,例如:
final_str = '(u'833',)' , '(u'765',)' , '(u'11',)' , '(u'56',)' , '(u'61',)' , '(u'84',)'
如何弄平正确的?
使用正则表达式,即使用列表理解功能将非数字替换为''
,然后与,
import re
m = ["'(u'833',)' ", "'(u'765',)' ", "'(u'11',)' ", "'(u'56',)' ", "'(u'61',)' ", "'(u'84',)' "]
new = ', '.join([re.sub('[^0-9]+' ,'', i) for i in m])
输出:
'833, 765, 11, 56, 61, 84'
您的输入混乱了,可能值得在上游修复。
如果您ast.literal_eval
,请使用ast.literal_eval
评估元组(在ast.literal_eval
字符串开头和结尾的引号和空格之后),获取第一个项目并重新加入字符串:
l = ["'(u'833',)' ", "'(u'765',)' ",
"'(u'11',)' ", "'(u'56',)' ", "'(u'61',)' ", "'(u'84',)' "]
import ast
s = ", ".join(y[0] for y in (ast.literal_eval(x.strip("' ")) for x in l))
print(s)
结果:
833, 765, 11, 56, 61, 84
您可以使用联接进行正则表达式:
import re
l = ["'(u'833',)' ", "'(u'765',)' ", "'(u'11',)' ", "'(u'56',)' ", "'(u'61',)' ", "'(u'84',)' "]
', '.join([re.search("\d+", elem).group() for elem in l if re.search("\d+", elem)])
这样产生:
'833,765,11,56,61,84'
import re
l = ["'(u'833',)' ", "'(u'765',)' ", "'(u'11',)' ", "'(u'56',)' ", "'(u'61',)' ", "'(u'84',)' "]
result = []
for elem in l:
num = re.split(r'([0-9]+)', elem)
result.append(num[1])
print(", ".join(result))
在ipython中对此进行了测试。 您只需要更深入。
Python 2.7.13 (default, Feb 4 2017, 17:39:59)
Type "copyright", "credits" or "license" for more information.
IPython 5.4.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: a = ((u'833',), (u'765',), (u'11',), (u'56',), (u'61',), (u'84',))
In [2]: a
Out[2]: ((u'833',), (u'765',), (u'11',), (u'56',), (u'61',), (u'84',))
In [3]: flatter = (x[0] for x in a)
In [4]: ret = ', '.join(flatter)
In [5]: ret
Out[5]: u'833, 765, 11, 56, 61, 84'
In [6]: ret = ret.encode('utf8')
In [7]: ret
Out[7]: '833, 765, 11, 56, 61, 84'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.