使用正则表达式清理列根据条件删除字符
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
使用正则表达式组拆分 origin
和 destination
之间的每一行,根据需要调整 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']
我正在考虑如何处理以下情况:
我有手动输入的原始数据和一些不需要的字符,我需要清理列。
如 (-,/,!,#) 等符号后的任何内容如果少于 5 个字母,则应删除。
原始数据
美国纽约 - 英国 LND
GBKTG-U
DUB AE-EUUSA
美国-TY
SG !S
CNZOS !C SEA
GAGAX"T
AEU DGR# 英国,GBR
期望输出
LND 英国
GBKTG
欧盟美国
美国
新加坡
CNZOS
嘎嘎
英国 GBR
使用正则表达式组拆分 origin
和 destination
之间的每一行,根据需要调整 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']