regex em string pandas (divisão)
Oct 28 2020
Olá, tenho strings como:
liste_to_split=['NW_011625257.1_0','scaffold1_3','scaffold3']
e eu gostaria de dividi-los no Number_Numberque tentei:
for i in liste_to_split:
i.split(r'(?<=[0-9])_')
e eu tenho
['NW_011625257.1_0']
['scaffold1_3']
['scaffold3']
ao invés de
['NW_011625257.1'] ['0']
['scaffold1'] ['3']
['scaffold3']
alguém sabe onde está o problema?
Respostas
1 anubhava Oct 28 2020 at 17:27
Você pode usar:
>>> 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']
Observe o uso de em re.splitvez de string.splite usando a _afirmação lookbehind externo para garantir que não estamos dividindo em uma correspondência de largura zero.
Com base no comentário do OP abaixo, parece que o OP deseja fazer essa divisão para uma dataframecoluna. Nesse caso, use:
Supondo que este seja o seu dataframe:
>>> print (df)
column
0 NW_011625257.1_0
1 scaffold1_3
2 scaffold3
Então você pode usar:
>>> 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)
resultado
['NW', '011625257.1', '0']
['scaffold1', '3']
['scaffold3']
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino