如何使用 Python re 删除所有以字母或数字开头并以 "PM" 结尾的子串

How to use Python re to remove all sub-strings starting with letters or numbers and ending with "PM"

我在我的文本文件中发现了一些由图像文件引起的随机代码,我想删除那些以字母或数字开头但以“PM”结尾的随机代码: 比如有一段文字:

iSD08LXjpg2021330401PM大陸不可以給60歲以上人士打香港專找60歲以上人士去打,做白老鼠

日本與美國比還是很不錯的USA死亡才多呢日媒體報道jpg2021321056PM

理想的结果是:

大陸不可以給60歲以上人士打香港專找60歲以上人士去打,做白老鼠

日本與美國比還是很不錯的USA死亡才多呢日媒體報道

但我不知道如何使用 re 来删除它。

您想删除所有连续的以 PM 结尾的罗马字母和阿拉伯数字。这是通过一个简单的正则表达式实现的:

[a-zA-Z0-9]*PM

a-z描述了所有小写拉丁字母的范围,相当于A-Z0-9* 表示任意数量的字符,因为您的字符串可能具有任意长度。 PM是固定结束字符串。

当然,你必须确保这些字符串不包含特殊字符,如ü。如果有,请适当添加字符组。

实际的 python 代码将是

    re.sub(r'[a-zA-Z0-9]*PM',"",inputtext)

使用 re.sub 删除字符串开头或结尾的所有 ascii(顺序 0-127)字符。

import re

s1 = 'iSD08LXjpg2021330401PM大陸不可以給60歲以上人士打香港專找60歲以上人士去打,做白老鼠'
s2 = '日本與美國比還是很不錯的USA死亡才多呢日媒體報道jpg2021321056PM'
>>> re.sub(r'^[\x00-\x7F]+|[\x00-\x7F]+$', '', s1)
'大陸不可以給60歲以上人士打香港專找60歲以上人士去打,做白老鼠'

>>> re.sub(r'^[\x00-\x7F]+|[\x00-\x7F]+$', '', s2)
'日本與美國比還是很不錯的USA死亡才多呢日媒體報道'