У меня есть:
blah blah blah (3383-HK) - blah blah blah
blah blah blah (A-US) - blah blah blah
blah blah blah (blah) (3383-HK) - blah blah blah
blah blah blah (A.CC-US) - blah blah blah
Я хочу извлечь биржевую бирку из каждой строки.
(3383-HK
(A-US
(3383-HK
(A.CC-US
Формат биржевой биржи:
- заключенный в квадратные скобки
- имеет формат XXX-XXX или XXX.XXX-XXX, где XXX - это буквенные символы c символов длиной от 1 до 20 символов в каждом разделе
В настоящее время я использую:
df['ticker_region']=df['filename'].str.extract(r"(\(\w{1,20}-\w{1,20})")
и он возвращает:
(3383-HK
(3383-HK
(A.CC-US
, но НЕ: (A. CC -US
Есть ли рекомендуемый способ также извлечь последний?
Я пытался:
df['ticker_region']=df['filename'].str.extract(r"(\(\w{1,20}\.?\w{1,10}?-\w{1,20})")
, но он не работает, так как он не захватывает:
(A-US
мой полный скрипт :
df=pd.DataFrame({'filename':[ "blah blah blah (3383-HK) - blah blah blah",
"blah blah blah (A-US) - blah blah blah",
"blah blah blah (blah) (3383-HK) - blah blah blah",
"blah blah blah (A.CC-US) - blah blah blah"]})
df['ticker_region']=df['filename'].str.extract(r"(\(\w{1,20}\.?\w{1,10}?-\w{1,20})") # search for (XXXXXXX-XXXXX
df['ticker_region2']=df['filename'].str.extract(r"(\(\w{1,20}.{1,20}?-\w{1,20})") # search for (XXXXXXX-XXXXX
df['ticker_region3']=df['filename'].str.extract(r"(\(\w{1,20}-\w{1,20})") # search for (XXXXXXX-XXXXX
df