python - Python - 正则表达式模式
问题描述
我正在尝试创建将使用像 12X15x2 这样的模式并从这样的字符串中提取它的函数:“STACKED STONE 52X36X72 AREAWELL BOMAN KEMP”所以模式是尺寸绞盘通常是一个或多个数字,“X”比一个或多个数字比“X”,并以一位或多位数字结尾。
这是我尝试过的:
# Importing dependencies
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import re
# Setting the test string
s = "STACKED STONE 52\"X36\"X72\" AREAWELL BOMAN KEMP"
# Test the pattern on a s string
result = re.sub(r"[a-z ]", "", s , flags=re.I)
print(result)
结果,我得到 52"36"72 ,它只是用任何内容替换字符串中的字母。
根据我的研究,我认为我必须使用编译函数并定义模式来读取数字字母 X 数字字母 X 数字,所以像 [1-9],"X",[1-9],"X",[ 1-9]
知道如何构造这个以及使用哪个 re 函数吗?
我在下面尝试了一些解决方案,但是我没有捕获每个实例,因为不幸的是我实际上有不止一种格式。这是我必须考虑的所有格式:
2x5x6
2"x5"6"
2'x5'6'
2"x5'x6
1/2"x5/8"x7'
所以每个数字都可以是整数,也可以是 1/2,每个数字都可以以以太英寸或英尺的形式出现。是否可以将其写在一行中,或者我必须创建几个函数来适应每个函数?
解决方案
这应该会有所帮助。
import re
s = "STACKED STONE 52X36X72 AREAWELL BOMAN KEMP"
m = re.search(r"\b(\d+X\d+X\d+)\b", s, flags=re.I)
if m:
print(m.group(1))
输出:
52X36X72
推荐阅读
- shell - 进行键绑定以运行上一个或最后一个 shell 命令
- weka - 训练集和测试集不兼容
- android - 从图库中选择多个图像并在多个图像视图中显示
- macos - 动态库是否在所有程序中具有相同的虚拟内存地址?
- c# - 当看到大写后跟小写时,有什么方法可以拆分字符串,它们之间没有空格?
- ios - 如何自定义用户位置图钉(Xamarin Forms Google Map)
- c++ - 子类调用意外的重载函数
- youtube-api - Youtube API:热门直播游戏
- ios - 在导航栏中添加自定义视图,如whatsapp
- pandas - 如果我的文本中有数字,则遍历数据框中的特定列并返回真或假(即)