如何在Python中删除特定字符之前的所有字符?
我想删除指定字符或字符集之前的所有字符(例如):如何在Python中删除特定字符之前的所有字符?,python,string,replace,Python,String,Replace,我想删除指定字符或字符集之前的所有字符(例如): intro=“我是汤姆。” 现在我想删除之前的(或者更具体地说,I)。有什么建议吗?使用re.sub。只需将所有字符匹配到I,然后将匹配的字符替换为I re.sub(r'^.*?I', 'I', stri) 由于index(char)获取字符的第一个索引,因此只需执行string[index(char):] 例如,在本例中,index(“I”)=2,以及intro[2:][2:]=“我是汤姆。”str=“我是汤姆。” 温度=str.split
intro=“我是汤姆。”
现在我想删除
之前的
(或者更具体地说,I
)。有什么建议吗?使用re.sub
。只需将所有字符匹配到I
,然后将匹配的字符替换为I
re.sub(r'^.*?I', 'I', stri)
由于index(char)
获取字符的第一个索引,因此只需执行string[index(char):]
例如,在本例中,index(“I”)=2
,以及intro[2:][2:]=“我是汤姆。”
str=“我是汤姆。”
温度=str.split(“I”,1)
临时[0]=临时[0]。替换(“,”)
str=“I”。加入(临时)
如果您知道开始删除的字符位置,可以使用切片表示法:
intro = intro[2:]
如果您知道要删除的字符,而不知道从何处开始,则可以使用以下功能:
intro = intro.lstrip("<>")
intro=intro.lstrip(“”)
重新导入
简介=“我是汤姆。”
re.sub(r'I',I',简介)
str.find
可以找到某些字符串第一次出现时的字符索引
:
intro[intro.find('I'):]
我循环遍历字符串并传递索引
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)
intro_list=[]
简介=“我是汤姆。”
对于范围内的i(len(intro)):
如果介绍[i]='':
通过
其他:
简介列表。附加(简介[i])
简介=''.join(简介列表)
印刷品(简介)
intro=“这些是不需要的字符,我是汤姆”
indx=介绍。查找(“I”)#“I”的位置
intro=intro[indx:]
印刷品(简介)
>intro=“我是汤姆。”
#只需在特殊符号处拆分字符串
>>>简介拆分(“”)
输出=[''“我是汤姆。”]
>>>新建=简介拆分(“”)
>>>新增[1]
“我是汤姆。”
指定的字符是什么?@SimeonVisser在这种情况下,它是I
。我明白了,但在其他情况下?我们如何知道文本从何处开始?嗯,我正在过滤文本中我要查找的内容;因此,作为回应,您可以通过使用循环、拆分文本/单词等来知道它从何处开始。我对re
相当陌生,我将进一步研究它;我很感激你的回答,谢谢!注意,您可以在第一个或最后一个I
re.sub(r.*?I',I',stri)
之间切换。但是其他答案不能满足这个要求。所以你是说re
是最好的选择?你有什么好的教程/文章来解释re
的基本原理吗?谢谢你的帮助。选择答案完全取决于你自己。是的,每个开发人员都必须学习正则表达式,因为很少有语言不使用正则表达式。@Avinashraja你知道我如何在不知道长度或字符的情况下做到这一点吗?没问题。这也适用于任何字符串。请注意1)您可能必须确保索引有效,即不是-1和2)index
仅返回给定字符串的第一次出现。实际示例为:intro[intro.index('i'):]
如果字符未出现在字符串中,这将引发一个ValueError
。不是downvoter,但您可以使用此'I'+intro.split('I',1)[1]
@AvinashRaj我也不是,尽管这会如何(真正好奇)改变函数的形状?据我所知,您在I
之前拆分了所有内容?另外,[1]
代表什么?拆分列表的索引1如果字符串中缺少字符,这将只返回输入字符串的最后一个字符,因为.find
将返回-1
,而某些字符串[-1:]
是“返回从最后一个字符开始的所有字符”。不会删除指定字符(OP)之前的所有内容,例如,使用intro=“junkI'm Tom.”
,将生成“junkI'm Tom.”
import re
intro = "<>I'm Tom."
re.sub(r'<>I', 'I', intro)
intro[intro.find('I'):]
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)
intro="These are unwanted characters <> I'm Tom"
indx = intro.find("I")#position of 'I'
intro = intro[indx:]
print(intro)
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())