我有一堆需要清理的字符串,它有以下模式:
12345SNET1
1234567SNETA2
123456SNET3
令人头疼的是,SNET之后的任何内容都可以是从0到9的任何整数,也可以是A-Z的char加上从0到9的整数。
是否无论如何都要使用正则表达式来检测字符串是否具有此模式,以便我可以使用:
if regex detect (returns True):
str = str[:-1]
elif regex detect (returns True):
str = str[:-2]
如果使用正确的正则表达式,不需要有两个case。
values = ["12345SNET1", "1234567SNETA2", "123456SNET3"]
for value in values:
m = re.match(r'\d+SNET([A-Z]?\d)', value)
if m:
print(m.group(1))
这会打印出来的
1
A2
3
如果希望文本位于最后一个字符之前,可以在正则表达式中添加额外的括号以捕捉该部分:
values = ["12345SNET1", "1234567SNETA2", "123456SNET3"]
for value in values:
m = re.match(r'(\d+SNET)([A-Z]?\d)', value)
if m:
print(m.group(1))
后果
12345SNET
1234567SNET
123456SNET
您可以使用re.sub
结合正后置来丢弃不需要的字符,方法如下:
import re
s1 = "12345SNET1"
s2 = "1234567SNETA2"
s3 = "123456SNET3"
out1 = re.sub(r"(?<=SNET)[A-Z]?\d", "", s1)
out2 = re.sub(r"(?<=SNET)[A-Z]?\d", "", s2)
out3 = re.sub(r"(?<=SNET)[A-Z]?\d", "", s3)
print(out1) # 12345SNET
print(out2) # 1234567SNET
print(out3) # 123456SNET
>
if re.fullmatch(r".*SNET\d", value):
value = value[:-1]
if re.fullmatch(r".*SNET[A-Z]\d", value):
value = value[:-2]
您可以直接使用re.sub
替换末尾
value = re.sub(r"(?<=SNET)[A-Z]?\d", "", value)
为了使用,您可以将其导出到方法中
def clean(value):
if re.fullmatch(r".*SNET\d", value):
return value[:-1]
if re.fullmatch(r".*SNET[A-Z]\d", value):
return value[:-2]
return value
# OR
def clean(value):
return re.sub(r"(?<=SNET)[A-Z]?\d", "", value)
if __name__ == '__main__':
values = ["12345SNET1", "1234567SNETA2", "123456SNET3"]
print(values) # ['12345SNET1', '1234567SNETA2', '123456SNET3']
values = list(map(clean, values))
print(values) # ['12345SNET', '1234567SNET', '123456SNET']
例如: 字符串1=helloworld字符串2=asdfuvjerhelloworld 这应该是真的。 另一个例子:字符串1=helloworld字符串2=lshewodxzr 这也应该是真的。 所以我正在研究如何创建一个方法,它将返回一个布尔值,检查第二个字符串是否包含第一个字符串中的字母。在第二个示例中,string2只有一次字母l,尽管字母l在string1中出现了三次,但仍然返回true。
我想解析一个字符串,看看它是匹配整个字符串还是子字符串。我试过这个: 但我的问题是:
本文向大家介绍如何检查Python的另一个字符串中是否存在多个字符串?,包括了如何检查Python的另一个字符串中是否存在多个字符串?的使用技巧和注意事项,需要的朋友参考一下 要检查数组中的任何字符串是否在另一个字符串中,可以使用any函数。 示例 输出结果 这将为您提供输出: 示例 尽管有些夸张,但您也可以使用正则表达式来匹配数组。例如: 输出结果 这将为您提供输出:
问题内容: 如何找到两个子字符串之间的字符串? 我当前的方法是这样的: 但是,这似乎效率很低而且不合Python。什么是做这样的更好的方法? 忘了提:该字符串可能无法启动,并最终和。他们之前和之后的字符可能更多。 问题答案:
问题内容: 我正在解决一个简单的问题: 在Java中删除字符数组中的某些字符,想法很简单: 我想输入一个信号,表示当我们想要使用例如生成一个字符串时,不必考虑数组的其余部分 Java中是否有这样的字符?(我想是,但我不确定) 例如,当我们调用: 这将被打印: 虽然我想得到,但我不想使用新的数组来做到这一点 问题答案: Java不会像C那样“标记”字符串的结尾。它跟踪长度和值,因此字符串中可以包含零
问题内容: 如何检查数组中的任何字符串是否在另一个字符串中? 喜欢: 该代码行不通,只是为了展示我想要实现的目标。 问题答案: 你可以使用: 同样,要检查是否找到了列表中的所有字符串,请使用all代替any。