在Python中删除字符串而不删除重复字符

在Python中删除字符串而不删除重复字符,python,Python,我正在将文件夹名称打印到包含数据的文本文件中,并希望从字符串中删除外部文件夹。例如,它正在打印C:\A3200\201808101040,但我想打印201808101040。当我使用str(os.getcwd().strip('C:\\A3200\\')从打印中删除外部文件夹时,程序返回180810104,这很奇怪,因为有些零被删除了,有些没有,等等。(它删除了开头20和结尾0) 我知道这可以通过使用不同于os.getcwd()的方式获取文件夹名称来实现,但我对这种未来的字符串操作方法感兴趣 如

我正在将文件夹名称打印到包含数据的文本文件中,并希望从字符串中删除外部文件夹。例如,它正在打印
C:\A3200\201808101040
,但我想打印
201808101040
。当我使用
str(os.getcwd().strip('C:\\A3200\\')
从打印中删除外部文件夹时,程序返回
180810104
,这很奇怪,因为有些零被删除了,有些没有,等等。(它删除了开头
20
和结尾
0

我知道这可以通过使用不同于
os.getcwd()
的方式获取文件夹名称来实现,但我对这种未来的字符串操作方法感兴趣

如何删除完整字符串中的某个字符串而不影响随后在完整字符串中重复的字符?

Strip获取一组字符并从两侧删除,直到遇到不在该组中的字符为止。这就是为什么它会吃掉你的2和0,而不是1。使用
os.getcwd().split(os.sep)[-1]

a=r"C:\A3200\201808101040" # make sure you read it raw
a[a.rindex("\\")+1:] #'201808101040'

如果您只需要将“C:\A3200”和“201808101040”分开

a=r"C:\A3200\201808101040"
a.rsplit("\\",1)[1] #'201808101040'
a.rsplit("\\",1)[0] #'C:\A3200'

这可能行得通,但我想知道如何 只需按字符串进行操作,以防我需要删除其他类似的内容 “pear”来自“peartree”,等,其中“e”在两个单词中都是


你可以用pear tree.replace('pear','',1).strip()这个特定问题的答案是使用
os.path.basename()

关于您更广泛的问题:“如何删除完整字符串中的特定字符串而不影响稍后在完整字符串中重复的字符?”

<>我会考虑使用正则表达式(正则表达式)。这允许您指定正面和负面的look aheads/look behinds以及许多其他有用的技巧。在此例中,我将考虑<强> >搜索字符串,而不是实际上<强> >替换< /强>字符串中的任何字符。以下是您的问题的正则表达式示例:

import re

s = r'C:\A3200\201808101040'

matches = re.findall(r'[0-9]+', s)

print(matches)
收益率:

['3200', '201808101040']

显然,在本例中,您对
matches
中返回的最终匹配感兴趣,因此您可以通过
matches[-1]
访问它,这会给出
201808101040
os.path.basename(“C:\A3200\201808101040”)
,这可能会起作用,但我想知道如何按字符串执行,以供将来参考,如果我需要从“pear tree”中删除“pear”等其他词,其中“e”在两个单词中都是我的字符串。替换('pear','')将从pear tree中删除“pear”。请澄清此问题?我觉得在各种答案的评论中有很多问题。你想干什么?当你需要从短语“pear tree”中删除单词“pear”时,你可以跨过“pear tree”这座桥。我想有一个问题被问到:如何删除完整字符串中的某个字符串而不影响后面在完整字符串中重复的字符?对于文件目录示例,可能有不同的方法,我想用与梨树示例完全相同的方法来做,OP关注3200吗?如果是这样的话,它不应该是A3200飞机吗?毕竟它是这条道路的一部分