如何删除Python中特定字符之前的所有字符?

时间:2015-06-19 19:20:57

标签: python string replace

我想删除指定字符或字符集之前的所有字符(例如):

intro = "<>I'm Tom."

现在,我想删除<>之前的I'm(或更具体地说,I)。有什么建议吗?

12 个答案:

答案 0 :(得分:20)

使用re.sub。只需将所有字符匹配到I,然后将匹配的字符替换为I

re.sub(r'.*I', 'I', stri)

答案 1 :(得分:13)

由于index(char)会为您提供角色的第一个索引,因此您只需执行string[index(char):]

例如,在这种情况下index("I") = 2intro[2:] = "I'm Tom."

答案 2 :(得分:2)

str = "<>I'm Tom."
temp = str.split("I",1)
temp[0]=temp[0].replace("<>","")
str = "I".join(temp)

答案 3 :(得分:2)

我遍历字符串并传递了索引。

intro_list = []

intro = "<>I'm Tom."
for i in range(len(intro)):
    if intro[i] == '<' or intro[i] == '>':
        pass
    else:
        intro_list.append(intro[i])

intro = ''.join(intro_list)
print(intro)

答案 4 :(得分:2)

>>> intro = "<>I'm Tom."
#Just split the string at the special symbol

>>> intro.split("<>")

Output = ['', "I'm Tom."]

>>> new = intro.split("<>")

>>> new[1]
"I'm Tom."

答案 5 :(得分:1)

如果您知道从何处开始删除,可以使用切片表示法:

intro = intro[2:]

如果你知道要删除的字符,那么你可以使用lstrip()函数,而不是知道从哪里开始:

intro = intro.lstrip("<>")

答案 6 :(得分:1)

str.find可以找到certain string's first appearance的字符索引:

intro[intro.find('I'):]

答案 7 :(得分:0)

import re
intro = "<>I'm Tom."
re.sub(r'<>I', 'I', intro)

答案 8 :(得分:0)

intro="These are unwanted characters <> I'm Tom"
indx = intro.find("I")#position of 'I'
intro = intro[indx:]
print(intro)

答案 9 :(得分:0)

import re

date_div = "Blah blah\nblah, Updated: Aug. 23, 2012 Blah blah Updated: Feb. 13, 2019"

up_to_word = ":"
rx_to_first = r'^.*?{}'.format(re.escape(up_to_word))
rx_to_last = r'^.*{}'.format(re.escape(up_to_word))

# (Dot.) In the default mode, this matches any character except a newline. 
# If the DOTALL flag has been specified, this matches any character including a newline.

print("Remove all up to the first occurrence of the word including it:")
print(re.sub(rx_to_first, '', date_div, flags=re.DOTALL).strip())

print("Remove all up to the last occurrence of the word including it:")
print(re.sub(rx_to_last, '', date_div, flags=re.DOTALL).strip())

答案 10 :(得分:0)

如果字符不在字符串中,此解决方案也有效,但使用的 if 语句可能会很慢。

if 'I' in intro:
  print('I' + intro.split('I')[1])
else:
  print(intro)

答案 11 :(得分:-1)

没有正则表达式

intro.split('<>',1)[1]