繁体   English   中英

将双元组转换为字符串

[英]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.

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