[英]Replacing Certain Parts of a String Python
我似乎無法解決這個問題。 我有很多不同的字符串,而且它們總是不同的。 我需要替換它們的末端,但是它們的長度總是不同的。 這是幾個字符串的示例:
string1 = "thisisnumber1(111)"
string2 = "itsraining(22252)"
string3 = "fluffydog(3)"
現在,當我打印出這些內容時,它當然會打印出以下內容:
thisisnumber1(111)
itsraining(22252)
fluffydog(3)
我想要打印的內容如下:
thisisnumber1
itsraining
fluffydog
我希望刪除每個字符串的括號中的部分,但是我不知道長度總是在變化的意義。 謝謝
您可以為此使用str.rsplit
:
>>> string1 = "thisisnumber1(111)"
>>> string2 = "itsraining(22252)"
>>> string3 = "fluffydog(3)"
>>>
>>> string1.rsplit("(")
['thisisnumber1', '111)']
>>> string1.rsplit("(")[0]
'thisisnumber1'
>>>
>>> string2.rsplit("(")
['itsraining', '22252)']
>>> string2.rsplit("(")[0]
'itsraining'
>>>
>>> string3.rsplit("(")
['fluffydog', '3)']
>>> string3.rsplit("(")[0]
'fluffydog'
>>>
str.rsplit
將字符串從右str.rsplit
拆分,而不是像str.split
那樣str.split
向右str.split
。 因此,我們在(
上從右到左分割字符串,然后檢索索引0
(第一個元素)處的元素。這將是每個字符串末尾(...)
之前的所有內容。
您的另一個選擇是使用正則表達式,它可以使您更精確地控制要獲取的內容。
import re
regex = regex = r"(.+)\(\d+\)"
print re.match(regex, string1).groups()[0] #returns thisisnumber1
print re.match(regex, string2).groups()[0] #returns itsraining
print re.match(regex, string3).groups()[0] #returns fluffydog
發生的事件的細分:
regex = r"(.+)\\(\\d+\\)"
是正則表達式,即您要查找的字符串的公式
.+
表示匹配換行符(除了換行符)之外的任何一種或多種字符
\\d+
表示匹配1個或多個數字
\\(
和\\)
是“(”和“)”字符
將.+
放在括號中會將字符串序列放在一組中,這意味着您希望以后可以使用一組字符。 我們不會將序列\\(\\d+\\)
放在組中,因為我們不在乎那些字符。
regex.match(regex, string1).groups()
給出string1
中屬於組的每個子字符串。 由於只需要1個子字符串,因此只需訪問第0個元素。
如果您想了解更多, 這里有一個很好的關於正則表達式的教程。
由於您在評論中說:
“括號中所有的都是數字”
因此,您的括號之間總是有數字,我建議您看一下使用正則表達式模塊將其刪除的方法:
import re
string1 = "thisisnumber1(111)"
string2 = "itsraining(22252)"
string3 = "fluffydog(3)"
strings = string1, string2, string3
for s in strings:
s_replaced = re.sub(
r'''
\( # must escape the parens, since these are special characters in regex
\d+ # one or more digits, 0-9
\)
''', # this regular expression will be replaced by the next argument
'', replace the above with an empty string
s, # the string we're modifying
re.VERBOSE) # verbose flag allows us to comment regex clearly
print(s_replaced)
打印:
thisisnumber1
itsraining
fluffydog
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.