regex in string pandas (split)
Oct 28 2020
Ciao ho stringhe come:
liste_to_split=['NW_011625257.1_0','scaffold1_3','scaffold3']
e vorrei dividerli nel momento in cui Number_Numberho provato:
for i in liste_to_split:
i.split(r'(?<=[0-9])_')
e ho ottenuto
['NW_011625257.1_0']
['scaffold1_3']
['scaffold3']
invece di
['NW_011625257.1'] ['0']
['scaffold1'] ['3']
['scaffold3']
qualcuno sa dov'è il problema?
Risposte
1 anubhava Oct 28 2020 at 17:27
Puoi usare:
>>> import re
>>> liste_to_split=['NW_011625257.1_0','scaffold1_3','scaffold3']
>>>
>>> for i in liste_to_split:
... re.split(r'(?<=[0-9])_', i)
...
['NW_011625257.1', '0']
['scaffold1', '3']
['scaffold3']
Nota l'uso di al re.splitposto di string.splite usando l' _asserzione lookbehind esterno per assicurarti che non stiamo dividendo su una corrispondenza di larghezza zero.
Sulla base del commento di OP di seguito, sembra che OP voglia fare questa suddivisione per una dataframecolonna. In tal caso, utilizzare:
Supponendo che questo sia il tuo dataframe:
>>> print (df)
column
0 NW_011625257.1_0
1 scaffold1_3
2 scaffold3
Quindi puoi usare:
>>> print (df['column'].str.split(r'(?<=[0-9])_', expand=True))
0 1
0 NW_011625257.1 0
1 scaffold1 3
2 scaffold3 None
1 Noname Oct 28 2020 at 17:39
l=['NW_011625257.1_0','scaffold1_3','scaffold3']
for i in l:
f = i.split('_')
print(f)
produzione
['NW', '011625257.1', '0']
['scaffold1', '3']
['scaffold3']