使用正则表达式清理列根据条件删除字符

2024-10-04 11:33:49 发布

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

我正试图找出我将如何处理以下情况:

我有手动输入的原始数据和几个不必要的字符,我需要清理列

如果少于5个字母,则应删除符号后面的任何内容,如(-,/,!,#)

原始数据

纽约美国-LND英国

GBKTG-U

配音AE-尤萨

美国-泰

SG!

CNZOS!C海

GAGAX“T

AEU DGR#英国,GBR

所需输出

LND英国

GBKTG

尤萨

美国

SG

CNZOS

加加兹

英国GBR


Tags: 内容原始数据字母符号情况手动sg字符
1条回答
网友
1楼 · 发布于 2024-10-04 11:33:49

使用正则表达式组在origindestination之间分割每一行,根据需要调整separator[^\w\s])。接下来,计算分隔符符号右侧的字母数,检查指定的字母数

详细信息:

  • (.*?):捕获组-零个或多个字符(行尾除外)非灰色
  • [^\w\s]:后跟不是字母、数字、下划线([a-z-a-Z0-9_])或空格的任何字符
  • (.*):捕获组-零个或多个字符(行尾除外)

文件sample.txt用作输入

NYC USA - LND UK
GBKTG-U
DUB AE- EUUSA
USA -TY
SG !S
CNZOS !C SEA
GAGAX"T
AEU DGR# UK,GBR
import re

f = open("sample.txt", "r")
txt = f.read()

dest = []
r = re.findall(r"(.*?)[^\w\s](.*)", txt)
for f in r:
    if sum([i.isalpha() for i in f[1]]) >= 5:
        dest.append(f[1].strip())
    else:
        dest.append(f[0].strip())

print(dest)
['LND UK', 'GBKTG', 'EUUSA', 'USA', 'SG', 'CNZOS', 'GAGAX', 'UK,GBR']

相关问题 更多 >