2017-09-21 1 views
0

Je veux convertir deux tuple, qui ressemble à ceci:Convertir deux tuple à chaîne

{tuple} <type 'list'>: ((u'833',), (u'765',) , 
(u'11',) , (u'56',) , (u'61',) , (u'84',)) 

à cette chaîne:

"833, 765, 11, 56, 61, 84" 

J'ai essayé de cette façon:

query = double_tuple_from_above 
str = ["'{}' ".format(element) for element in query ] 
final_str = ', '.join(str) 
# aaaa = steamids64.replace("(", "',)") # does not work 

Mais le résultat ne semble pas correct dans les deux cas, par exemple:

final_str = '(u'833',)' , '(u'765',)' , '(u'11',)' , '(u'56',)' , '(u'61',)' , '(u'84',)' 

Comment l'aplanir correctement?

Répondre

1
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)) 
1

Vous pourriez faire un regex avec une jointure:

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)]) 

Cela donne:

'833, 765, 11, 56, 61, 84'

2

Utilisez regex-à-dire de remplacement des numéros non avec '' en utilisant la compréhension de la liste, puis se joindre à ,

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]) 

Sortie:

'833, 765, 11, 56, 61, 84' 
2

votre entrée est foiré, probablement la peine de fixation en amont.

Si vous êtes coincé avec cela, utilisez ast.literal_eval pour évaluer les tuples (après le décapage des citations & espaces de la fin début & des cordes), prenez le premier article et rejoindre en chaînes de caractères:

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) 

résultat:

833, 765, 11, 56, 61, 84 
1

testé ce dans ipython. Vous devriez juste aller plus loin.

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'