簡體   English   中英

從字符串中刪除空括號 ( )

[英]Remove empty brackets ( ) from string

我在從字符串中刪除空括號時遇到了問題,我嘗試了幾種方法都不起作用。 好心的幫助

這是 dataframe

data = {'disc': ['( ) -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol methanesulfonate','( ) ( s ) -isopropyl 2 ','( 2s3s ) -12-epoxy-3- ( boc-amino ) -4-phenylbutane ( ) boc-epoxideide']}
df1 = pd.DataFrame(data)
print(df1)

多次出現( )只需要刪除空括號。

輸入:

      disc
0   ( ) -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol methanesulfonate
1   ( ) ( s ) -isopropyl 2 
2   ( 2s3s ) -12-epoxy-3- ( boc-amino ) -4-p

output:

     disc
0   -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol methanesulfonate
1   ( s ) -isopropyl 2 
2   ( 2s3s ) -12-epoxy-3- ( boc-amino ) -4-phenylbutane boc-epoxideide

使用替換沒有幫助,因為它會刪除字符串中的所有括號。

替換應該工作:


a="'( ) -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol"

>>> a.replace("( )","")
>>> "' -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol"

import re 你可以嘗試使用正則表達式模塊

df1["disc"] = df1["disc"].str.replace("\(\\s+\)", "")

\\s+表示它將檢測兩個括號之間的一個或空格

 -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol methanesulfonate
 ( s ) -isopropyl 2 
( 2s3s ) -12-epoxy-3- ( boc-amino ) -4-phenylbutane  boc-epoxideide

pandas.DataFrame.replace確實支持使用正則表達式,所以你可以這樣做:

import pandas as pd
data = {'disc': ['( ) -2,4-dichloro-a- ( chloromethyl ) -benzenemethanol methanesulfonate','( ) ( s ) -isopropyl 2 ','( 2s3s ) -12-epoxy-3- ( boc-amino ) -4-phenylbutane ( ) boc-epoxideide']}
df1 = pd.DataFrame(data)
df2 = df1.replace(r'\s*\(\s*\)\s*', '', regex=True)
print(df2)

Output:

                                                disc
0  -2,4-dichloro-a- ( chloromethyl ) -benzenemeth...
1                                ( s ) -isopropyl 2
2  ( 2s3s ) -12-epoxy-3- ( boc-amino ) -4-phenylb...

請注意,您必須通知替換使用正則表達式( regex=True ),我使用所謂的原始字符串來簡化 escaping, ()需要轉義,因為它們在模式中具有特殊含義,至於我使用的模式本身在( )之前和之后也有 0 個或多個空格 ( /s* ),也可以刪除前導/尾隨空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM