Я хотел бы извлечь определенную часть строки из CSV-файла - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть огромное количество столбцов, содержащих данные такого типа:

DE-JP-202/2066/A2@qwier.cu/68
NL-LK-02206/2136/A1@ozmmfts.de/731
OM-PH-31303222/3671/Z1@jtqy.ml/524

Я хотел бы извлечь строку между '@' и '.'и между '.'и '/' в двух отдельных столбцах.

Как:

txt 1      txt 2
qwier       cu
ozmmft      de
jtqy        ml

Пробовал:

x = dane.str.extract(r'@(?P<txt1>\d)\.(?P<txt2>[ab\d])/')

Но не работает

Ответы [ 2 ]

2 голосов
/ 05 ноября 2019

Если вы хотите получить 2 группы захвата, вы можете использовать 2 отрицательные классы символов .

. В первом совпадении группы 1+ раз любой символ, кроме точки [^.]+

В матче второй группы 1+ раз любой символ, кроме слэша [^/]+

@(?P<txt1>[^.]+)\.(?P<txt2>[^/]+)/

Regex demo

0 голосов
/ 05 ноября 2019

Если форматирование всех ваших строк имеет только 1 @ и 1 .. Вы можете сделать следующее:

s = 'DE-JP-202/2066/A2@qwier.cu/68'

column1 = s.split('@')[1].split('.')[0]

column2 = s.split('@')[1].split('.')[1].split('/')[0]

...