提取日期并删除不需要的字符

2024-06-11 02:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过从文本中提取日期信息来创建一个新列。我发现日期在每行的末尾,在最后两个圆括号内

 Text

    "«A mio avviso, e credo non solo mio, (17-11-2020 12:42:05)"
     "Roma, 17 nov – Dalle elezioni, non è facile (…)\n (17-11-2020 12:42:04)"
     'Decine di avvocati del libero foro di tutte le regioni  ... (17-11-2020 12:41:08)'
     "Ci sono riusciti: vi stanno facendo odiare l'un l'altro (17-11-2020 12:41:01)"
     'Luciano ,\xa0 coreografo, esprime la sua opinione e il mondo de... (17-11-2020 12:40:01)'
    

为了提取日期时间,我做了如下操作:

df['Date'] = df['Text'].str.extract('(?<=\()(.*?)(?=\)$)')

总体来说,这很好,但我也希望删除一些案例,这些案例没有包含在前面的代码中。 例如:

0                17-11-2020 12:42:05
1                17-11-2020 12:42:04
2                17-11-2020 12:41:08
3        video) (17-11-2020 12:41:01 # <- here the wrong extraction
4                17-11-2020 12:40:01
                    ...             
20084            07-02-2020 12:47:11

该行的文本如下所示:

"Ci sono riusciti: vi stanno facendo odiare l'un l'altro. (video) (17-11-2020 12:41:01)"

我只提取了最后一个括号内的内容,我将能够得到我想要的,即。17-11-2020 12:41:01.

你知道我怎么才能得到这个吗? 谢谢


Tags: text文本cidfunvinondi
3条回答

试着跑两遍。提取并替换

df['Date'] = df['Text'].str.extract('(?<=\()(.*?)(?=\)$)').replace(regex='[a-z]+\)\s\(',value='')

尝试:

df['Date'] = df['Text'].str.extract('\(([^()]*)\)$')

使用-

df['Text'].str.extract(r'(?:(\()(?!.*\1))(.*)(?:(\))(?!.*\1))').iloc[:,1]

输出

0    17-11-2020 12:42:05
1    17-11-2020 12:42:04
2    17-11-2020 12:41:08
3    17-11-2020 12:41:01
4    17-11-2020 12:40:01
Name: 1, dtype: object

相关问题 更多 >