Python 如何从字符串开头删除特定字符

Python 如何从字符串开头删除特定字符,python,pandas,Python,Pandas,我有一个DataFrame,它有一个名为AlternateName的列。它包含不同成分的名称,但大多数成分在实际名称之前有数量和单位 Alternate_Name 2 ★ Sukkerfri chokolade 3 100 g. sukkerfri 70% mørk chokolade 4

我有一个DataFrame,它有一个名为AlternateName的列。它包含不同成分的名称,但大多数成分在实际名称之前有数量和单位

                                     Alternate_Name
2                                   ★ Sukkerfri chokolade
3                     100 g. sukkerfri 70% mørk chokolade
4                                     sukkerfri chokolade
5                      50 g. sukkerfri 70% mørk chokolade
6                        Chokoladesovs uden tilsat sukker
7                          1 spsk Chokolade proteinpulver
8                        1 spsk proteinpulver (chokolade)
9                        1,5 spsk chokolade proteinpulver
10                           spsk chokolade proteinpulver
11                      stor spsk chokolade proteinpulver
12                            30 g chokoladeproteinpulver
13                 30 g Linus Pro proteinpulver med Kakao
14            30 g proteinpulver med Kakao fra Linus Pro*
15      45 g proteinpulver (jeg brugte chokolade/hasse...
16            50 g chokolade og banan proteinpulver (HER)
17                           ,5 spsk vanilleproteinpulver
18                    1 spsk proteinpulver – Vanille smag
19                           1 spsk vanille proteinpulver
20                          1 spsk vanille proteinpulver
21                      1 stor spsk vanille proteinpulver
22                             10 g vanille proteinpulver
23                            spsk vanilje protein pulver
24                            spsk Vanille Protein pulver
25                             spsk Vanille proteinpulver
26      spsk vanilleproteinpulver (eller lidt vanilles...
27               30 g Linus Pro Proteinpulver med vanille
28      30 g vanille proteinpulver fra Linus Pro   (Re...
29                            30 g vanille proteinpulver
30                              40 g vanilleproteinpulver
31                             60 g vanille proteinpulver
我已经试过了:
df=df[“AlternateName”].map(lambda x:x.lstrip('200 g.))
-但是,我需要添加一些特定条件来修剪这些字符串,因为我无法针对每种情况手动进行修剪

因此,我如何教我的程序使用匹配每个成分名称前的数字、单位和特殊字符的条件来删除字符串内容

例:200克。sukkerfri chokolade->sukkerfri chokolade

★ Sukkerfri chokolade->Sukkerfri chokolade


我对python不太熟悉,所以欢迎提供方法、提示、提示等帮助

您是否已经尝试应用正则表达式来删除数量? 像这样:

df['Alternate_Name'].str.replace(r'^\s*(★|[0-9]*,?[0-9]{1,}\s*(g|kg|spsk|stor spsk)|spsk)\s*,*', '')
它输出:

Out[71]: 
0                            ★ Sukkerfri chokolade
1                   . sukkerfri 70% mørk chokolade
2                              sukkerfri chokolade
3                   . sukkerfri 70% mørk chokolade
4                 Chokoladesovs uden tilsat sukker
5                          Chokolade proteinpulver
6                        proteinpulver (chokolade)
7                          chokolade proteinpulver
8                          chokolade proteinpulver
9                stor spsk chokolade proteinpulver
10                          chokoladeproteinpulver
11               Linus Pro proteinpulver med Kakao
12          proteinpulver med Kakao fra Linus Pro*
13    proteinpulver (jeg brugte chokolade/hasse...
14          chokolade og banan proteinpulver (HER)
15                            vanilleproteinpulver
16                    proteinpulver – Vanille smag
17                           vanille proteinpulver
18                           vanille proteinpulver
19                           vanille proteinpulver
20                           vanille proteinpulver
21                          vanilje protein pulver
22                          Vanille Protein pulver
23                           Vanille proteinpulver
24    vanilleproteinpulver (eller lidt vanilles...
25             Linus Pro Proteinpulver med vanille
26    vanille proteinpulver fra Linus Pro   (Re...
27                           vanille proteinpulver
28                            vanilleproteinpulver
29                           vanille proteinpulver
Name: Alternate_Name, dtype: object

请提供数据而不是图片。图片无法转换为数据帧(至少目前还不能)。发布列的文本版本可能会很有用,这样可以复制它进行测试。您应该查看正则表达式。例如,“[0-9]*g”将匹配您的示例中的所有权重。@Demi Lune是一个易于正则表达式测试的有用引擎:我已将您的数据作为文本输入您的问题中。批准编辑,以便其他人也能看到。这是巨大的帮助!干杯顺便问一句,这辆车怎么样★ 性格我一直在试图找出如何使正则表达式匹配它,但我找不到任何解决方案。它似乎是一个unicode字符。它的序号是9733。但如果我只是把它复制到正则表达式中,它也会起作用。请稍等,我编辑了上面的答案以包含它。不确定复制是否会更改代码或其他内容。我只是从第一个
)后面的输出中复制了一个字符,然后在它后面插入了第二个
|
。它是这样工作的。如果由于某种原因没有这样做,我想您必须以十六进制形式指定它。因此模式的开头看起来像
r'^\s*(\u2605 |[0-9]*
)。