如何在python中从str中删除字符?

如何在python中从str中删除字符?,python,python-3.x,Python,Python 3.x,我有以下str,我想删除字符 例如: 来自str1=A.B.1912/2013H-002322 至1912/2013 自srt2=I.M.1591/2017I-29917529 至2017年1月1591日 来自str3=I.M.C.15/2017I-11217529 至2017年5月15日 我试着这样做,但我需要把其余的从右边移走 newStr=str1.带“A.B.” “1912/2013H-002322” 目前,我正在用切片表示法来做这件事 str1=A.B.1912/2013H-00232

我有以下str,我想删除字符

例如:

来自str1=A.B.1912/2013H-002322 至1912/2013

自srt2=I.M.1591/2017I-29917529 至2017年1月1591日

来自str3=I.M.C.15/2017I-11217529 至2017年5月15日

我试着这样做,但我需要把其余的从右边移走

newStr=str1.带“A.B.”

“1912/2013H-002322”

目前,我正在用切片表示法来做这件事

str1=A.B.1912/2013H-002322

str1=str1[4:13]

“1912/2013”

但并非所有的长度都相同

有什么想法或建议吗?

改用正则表达式:

import re

regex = re.compile(r'\d+/\d+')

print(regex.search(str1).group())
print(regex.search(str2).group())
print(regex.search(str3).group())
输出:

1912/2013
1591/2017
15/2017
请改用正则表达式:

import re

regex = re.compile(r'\d+/\d+')

print(regex.search(str1).group())
print(regex.search(str2).group())
print(regex.search(str3).group())
输出:

1912/2013
1591/2017
15/2017
我们可以尝试将re.sub与捕获组一起使用:

str1 = "A.B.1912/2013(H-0)02322"
output = re.sub(r'.*\b(\d+/\d+)\b.*', '\\1', str1)
print(output)

1912/2013
我们可以尝试将re.sub与捕获组一起使用:

str1 = "A.B.1912/2013(H-0)02322"
output = re.sub(r'.*\b(\d+/\d+)\b.*', '\\1', str1)
print(output)

1912/2013
你必须用一种方法来解决这个问题

import re

pattern = r'\d+/\d+'

str1 = "A.B.1912/2013(H-0)02322"
srt2 = "I.M.1591/2017(I-299)17529"
str3 = "I.M.C.15/2017(I-112)17529"

print(*re.findall(pattern, str1))
print(*re.findall(pattern, str2))
print(*re.findall(pattern, str3))
输出:

1912/2013
1591/2017
15/2017
你必须用一种方法来解决这个问题

import re

pattern = r'\d+/\d+'

str1 = "A.B.1912/2013(H-0)02322"
srt2 = "I.M.1591/2017(I-299)17529"
str3 = "I.M.C.15/2017(I-112)17529"

print(*re.findall(pattern, str1))
print(*re.findall(pattern, str2))
print(*re.findall(pattern, str3))
输出:

1912/2013
1591/2017
15/2017

通过对字符串格式的一些适度假设,下面是一个不使用正则表达式的解决方案:

首先拆分字符上的字符串,将子字符串保留在左侧:

left = str1.split( '(' )[0]   # "A.B.1912/2013"
然后,在最后一页上拆分结果。i、 e.仅从右侧拆分一次,保留第二个组件:

cut = left.rsplit('.', 1)[1]  # "1912/2013"
或者将这两个步骤组合成一个函数:

def extract(s):
    return s.split('(')[0].rsplit('.', 1)[1]

通过对字符串格式的一些适度假设,下面是一个不使用正则表达式的解决方案:

首先拆分字符上的字符串,将子字符串保留在左侧:

left = str1.split( '(' )[0]   # "A.B.1912/2013"
然后,在最后一页上拆分结果。i、 e.仅从右侧拆分一次,保留第二个组件:

cut = left.rsplit('.', 1)[1]  # "1912/2013"
或者将这两个步骤组合成一个函数:

def extract(s):
    return s.split('(')[0].rsplit('.', 1)[1]
str1.split[0]作为启动器。str1.split[0]作为启动器。