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

Cleaning column using regex remove character based on conditions

我正在考虑如何处理以下情况:

我有手动输入的原始数据和一些不需要的字符,我需要清理列。

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

原始数据

美国纽约 - 英国 LND

GBKTG-U

DUB AE-EUUSA

美国-TY

SG !S

CNZOS !C SEA

GAGAX"T

AEU DGR# 英国,GBR

期望输出

LND 英国

GBKTG

欧盟美国

美国

新加坡

CNZOS

嘎嘎

英国 GBR

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

详情:

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

文件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']