2012-09-28 235 views
2

我試圖刪除一個字符串的某些部分符合特定字符刪除字符串中的某些字符,如果匹配的字符串中發現如下如何在蟒蛇

string = 'Newyork, NY' 

我要刪除所有字符在包含comma的逗號後,如果逗號存在於字符串中

任何人都可以讓我現在該怎麼做。

回答

7

使用.split()

string = string.split(',', 1)[0] 

我們在逗號分割字符串一次,以節省蟒蛇更多逗號分割的工作。

或者,你可以使用.partition()

string = string.partition(',')[0] 

演示:

>>> 'Newyork, NY'.split(',', 1)[0] 
'Newyork' 
>>> 'Newyork, NY'.partition(',')[0] 
'Newyork' 

.partition()是更快的方法:

>>> import timeit 
>>> timeit.timeit("'one, two'.split(',', 1)[0]") 
0.52929401397705078 
>>> timeit.timeit("'one, two'.partition(',')[0]") 
0.26499605178833008 
+0

或STR。分區 – jamylak

+0

對於嚴格的正則表達式使用 - 你可能會拋出're.match('(。*?),',s).group(1)' - 但是,絕對是'str.split' max_splits是要走的路 –

+0

@jamylak:事實上,速度也更快。 –

1

可以split用分隔符","字符串:

string.split(",")[0] 

例子:

'Newyork, NY'.split(",") # ['Newyork', ' NY'] 
'Newyork, NY'.split(",")[0] # 'Newyork' 
0

一個FWE選項:

  • string[:string.index(",")]

    這將引發ValueError如果,不能在字符串中被發現。在這裏,我們通過.index找到角色的位置,然後使用切片。

  • string.split(",")[0]

    split功能會給您,分離的子字符串的列表,你只取列表的第一個元素。這將工作,即使,是不存在的字符串(因爲會是什麼在這種情況下分裂,我們就會有string.split(...) == [string]

1

試試這個:

s = "this, is" 
m = s.index(',') 
l = s[:m]