从结果中删除数字;Python3

2024-09-30 06:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个查询网站的脚本,结果如下所示

result = "
nameof1stlink
38
nameof2ndlink120
12
nameof3rdlink15
7
nameof4thlin...
k143
43
"

基本上,我想删除每行文本后面的数字。这对我来说很容易在一个模式中完成,但是偶尔会有一条长的线占据两条独立的线。还有一个问题是需要将数字保留在实际的文本名称中

我在考虑检查每一行的字符串长度,只删除那些不超过5个字母/数字的行,但我不确定这是否可行,我也不太确定如何做到这一点

你们的任何帮助都会很好

谢谢!:)


Tags: 字符串文本脚本名称网站字母模式数字
1条回答
网友
1楼 · 发布于 2024-09-30 06:30:41

您可以使用正则表达式匹配,查找一个类似字符串的链接(允许换行符),后跟一个数字和一个换行符,这是您希望忽略的。然后,为了适应多行链接,使用简单的str.replace()删除链接跨多行拆分时出现的任何一致的...\n

根据您提供的示例,我想到的是:

import re

result = """nameof1stlink
38
nameof2ndlink120
12
nameof3rdlink15
7
nameof4thlin...
k143
43"""

matches = re.findall(r'([A-Za-z0-9\n/_.-]+?)[0-9\n]+[\n\b]', result, flags=re.M)
# match this group    '(                   )              '                   ^
# shortest possible   '                   ?               '          (multi-line
# at least one of     '                  +                '          string input)
# these characters    ' [A-Za-z0-9\n/_.-]                 '
# then, at least one  '                            +      '
# digit or newline    '                     [0-9\n]       '
# and ending with \n  '                             [\n\b]'
#   or end-of-string                     

# matches = ['nameof1stlink', 'nameof2ndlink', 'nameof3rdlink', 'nameof4thlin...\nk']

links = [link.replace('...\n', '') for link in matches]
# links = ['nameof1stlink', 'nameof2ndlink', 'nameof3rdlink', 'nameof4thlink']

我不确定你的链接是什么样子的,但我假设[A-Za-z0-9/_.-](字母数字加上/_.-)涵盖了超链接的所有标准部分。并且\n需要在其中的某个地方抛出,以适应多行条目。您可以根据链接的外观修改此角色类

相关问题 更多 >

    热门问题