2016-05-20 9 views
1

Also ich habe eine ZeichenfolgePython - erhalten Zeichenfolge Teil aus einem anderen String

"sdfsfsdfdsfsdfsd #.split.#style=background: black;" 

Ich möchte auf sie einige Operationen tun Ich möchte den #.split.# Teil zu einem div schließen Tag und offen Tag ändern:

str.replace("#.split.#", '</div><div>') 

anders als das ich will, das Teil nach dem style= nehmen und in das setzen div offenen Tag

, was ein schnelles Verfahren ist TU das? Beachten Sie, dass der #.split.#style= Teil kann mehrmals in einer Zeichenfolge auftreten, und dass der Teil nach der style= in der Länge variieren kann, aber immer in einem Zeilenumbruch endet.

edit:

, was ich erreichen will, ist aus einem String wie folgt gehen:

"sdfsfsdfdsfsdfsd #.split.#style=background: black; 
sdfsfsdfdsfsdfsd #.split.#style=background: red;" 

dazu:

'sdfsfsdfdsfsdfsd </div><div style="background: black;"> 
sdfsfsdfdsfsdfsd </div><div style="background:red;">' 
+0

Es ist nicht ganz klar, was Du versuchst es - obwohl Es klingt so, als ob du 's.split ('# .split. # style =')' 'benutzen willst (wobei' s' die Zeichenkette ist, die du verarbeitest). –

+0

Bitte drucken Sie das Ergebnis, das Sie erreichen wollen – Kruser

Antwort

0

Hier ist die Lösung:

import re 

text="sdfsfsdfdsfsdfsd #.split.#style=background: black\nsdfsfsdfdsfsdfsd #.split.#style=background: red" 
matches = re.findall('.*#.split.#.*', text) 
final = "" 
for m in matches: 
    parts = re.search("(.*)#.split.#style=(.*)", m) 
    new = '{}</div><div style="{};">'.format(parts.group(1), parts.group(2)) 
    final += new + "\n" 
print final  

und das Ergebnis wird sein:

sdfsfsdfdsfsdfsd </div><div style="background: black;"> 
sdfsfsdfdsfsdfsd </div><div style="background: red;"> 
+0

Ich musste ein paar Änderungen hinzufügen, damit es funktioniert, für meinen Zweck, aber es funktioniert großartig. Vielen Dank! – Tomas

+0

Froh, dass es geholfen hat. – apadana

0

Nach was du getan hast,

# Avoid str, it is a function name 
text = "sdfsfsdfdsfsdfsd #.split.#style=background: black;" 
text.replace("#.split.#", "</div><div ") 
# End the tag 
text += ">" 

Dies wird ein Ergebnis geben:

>>> text 
"sdfsfsdfdsfsdfsd </div><div style=background: black;>" 

EDIT

einfach geteilt und wieder zusammenzubringen.

# Avoid str, it is a function name 
text = 'sdfsfsdfdsfsdfsd #.split.#style=background: black;\n' 
# Split string into sections 
text = text.split('\n') 
# Do the same thing on each line 
for i, s in enumerate(text): 
    # Start div tag 
    new_text = s.replace('#.split.#', '</div><div ') 
    # Add quotes 
    new_text = new_text.replace('style=', 'style="') 
    new_text = new_text.replace(';', ';"') 
    if i != len(text) - 1: 
     new_text += '>' 
    # Apply changes 
    text[i] = new_text 
# Join the strings back together with newlines 
text = '\n'.join(text) 

RE-EDIT

# Avoid str, it is a function name 
text = 'sdfsfsdfdsfsdfsd #.split.#style=background: black;\nalksjacxnckaljdad#.split.#style=background: white;\n' 
# Split string into sections 
text = text.split('\n') 
# Do the same thing on each line 
for i, s in enumerate(text): 
    # Start div tag 
    new_text = s.replace('#.split.#', '</div><div style="') 
    if i != len(text) - 1: 
     new_text += '">' 
    # Apply changes 
    text[i] = new_text 
# Join the strings back together with newlines 
text = '\n'.join(text) 
+0

Nun, es ist entlang der Linie :) Imaging, dass die Zeichenfolge ist länger mit mehreren Vorkommen der '# .split. # Style =' mit der CSS nach. also: text = "sdfsfsdfdsfsdfsd # .split. # style = hintergrund: schwarz \ nsdfsfsdfdsfsdfsd # .split. # style = hintergrund: rot" – Tomas

+0

Ich möchte, dass die Operationen an allen '# .split. # style =' funktionieren Teile – Tomas

Verwandte Themen