Wie man ein Substring mit einem Muster entspricht und durch Übergeben einer Variablen in Regex, Python, ersetzt
Posted: 30 Apr 2025, 21:41
Ich versuche, die Spaltenwerte eines Pandas -Datenfreams nacheinander durchzusetzen, um ein Substring mit einem Regex -Muster zu erkennen und zu ersetzen, wo es auftaucht. />[*]'func(-etwas, das etwas)...'
< /ol>
Ich versuche, die Werte mit der zweiten Variation abzuzielen, und ersetzen Sie den von Kommas getrennten Substring aus einer anderen Spalte in derselben Zeile.
Ich habe eine erfolgreiche Ausgabe an einem Terminal erhalten, wenn ich das * im Muster mit +:
ersetze
Ich dachte, die.* in muster1 sollte nach der endgültigen erfassten Klammung für 0 oder mehr Instanzen eines Zeichens ordnungsgemäß ordnungsgemäß, aber zumindest verwenden.+ In Muster2 >>
col1 col2
0 func(a,b) and func(c,d) e
1 func(a) and func(c) b
2 func(b) and func(c,d) a
3 func(a,b,c) and func(d,e,f) g
< /code>
import re
df['col3'] = ''
for i,x in enumerate(df['col2']):
pattern = r'^(func\().+,.+(\).+)'
replacement = fr'\1{x}\2'
df.loc[i,'col3'] = re.sub(pattern,replacement,df.loc[i,'col1'])
if df.loc[i,'col3'] != df.loc[i,'col1']:
print(df.loc[i,'col1'],'--->',df.loc[i,'col3'])
>>>
func(a,b) and func(c,d) ---> func(e) and func(c,d)
func(a,b,c) and func(d,e,f) ---> func(g) and func(d,e,f)
[/code]
< /ol>
Ich versuche, die Werte mit der zweiten Variation abzuzielen, und ersetzen Sie den von Kommas getrennten Substring aus einer anderen Spalte in derselben Zeile.
Code: Select all
import re
for i, x in enumerate(df['col1']):
df.loc[i,'col2'] = re.sub(r'^(func\().+,.+(\).*)', r'\1%s\2'%(x), df.loc[i,'col2'])
ersetze
Code: Select all
>>> val = 'func(y,z) and func2(a,b)'
>>> val
'func(y,z) and func2(a,b)'
>>> pattern1 = r'^(func\().+,.+(\).*)'
>>> replacement = r'\1%s\2'%('x')
>>> val2 = re.sub(pattern1, replacement, val)
>>> val2
'func(x)'
>>> pattern2 = r'^(func\().+,.+(\).+)'
>>> val2 = re.sub(pattern2, replacement, val)
>>> val2
'func(x) and func2(a,b)'
>>> val3 = 'func(y) and func2(a,b)'
>>> val4 = re.sub(pattern2, replacement, val3)
>>> val4
'func(y) and func2(a, b)'
col1 col2
0 func(a,b) and func(c,d) e
1 func(a) and func(c) b
2 func(b) and func(c,d) a
3 func(a,b,c) and func(d,e,f) g
< /code>
import re
df['col3'] = ''
for i,x in enumerate(df['col2']):
pattern = r'^(func\().+,.+(\).+)'
replacement = fr'\1{x}\2'
df.loc[i,'col3'] = re.sub(pattern,replacement,df.loc[i,'col1'])
if df.loc[i,'col3'] != df.loc[i,'col1']:
print(df.loc[i,'col1'],'--->',df.loc[i,'col3'])
>>>
func(a,b) and func(c,d) ---> func(e) and func(c,d)
func(a,b,c) and func(d,e,f) ---> func(g) and func(d,e,f)
[/code]