用Python格式化IUPAC术语的好方法(最好是快速的)

2024-10-02 20:36:18 发布

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

我有一个大数据集,其中包含许多IUPAC有机化学术语,格式如下:

2_3_7_8_TETRACHLORODIBENZO_P_DIOXIN_EXPOSURE

我需要能够将其翻译成标准的IUPAC表格,即:

2,3,7,8-tetrachlorodibenzo-p-dioxin exposure

化学名称中的单个字符有一个有限的列表(例如,在上面的例子中是P),在任何情况下不是_将被[blank space]替换。然而,我正在努力区分regex中_-替换的情况和被,替换的情况。我使用正则表达式替换命名的正则表达式和一个函数来替换它们。locants的capture regex是

(?P<locants>((^|\s)\d{1,2}\s){1,6})(注意,在这种情况下,_已经被空格取代,因此\s而不是_的普遍性)

但是我该如何写一些东西来确保2、3和7后面的空格被,替换,而8后面的空格被-替换呢?你知道吗


Tags: 数据标准格式情况regex表格exposure术语
1条回答
网友
1楼 · 发布于 2024-10-02 20:36:18

使用lookahead功能选择后面跟数字的破折号:

s = "2_3_7_8_TETRACHLORODIBENZO_P_DIOXIN_EXPOSURE"
s = re.sub(r"_(?=\d)", "," ,s)
#'2,3,7,8_TETRACHLORODIBENZO_P_DIOXIN_EXPOSURE'
s = re.sub(r"_", "-" ,s)
#'2,3,7,8-TETRACHLORODIBENZO-P-DIOXIN-EXPOSURE'

(你仍然需要做定位,但看起来你已经知道如何处理它们了。)

相关问题 更多 >