python - 正则表达式检查字符串是否有任何数字后跟python中的单位并修改它
问题描述
我正在尝试清理一些数据,包括“6cm*8cm”、“6cmx8cm”和“6*8”等文本。我想修改它们,使它们变得相似。请注意,数字是可变的,因此数据可能有“3cm*4cm”等。
# input strings
strings = [
"6cm*8cm",
"12mmx15mm",
'Device stemmer 2mm*8mm',
'Device stemming 2mmx8mm'
]
# My desired output would be:
desired_strings = [
'6*8',
'12*15',
'Device stemmer 2*8',
'Device stemming 2*8'
]
我正在使用python的're'。我的偏好是将它们转换为简单的“6*8”(即数字*数字)。请注意,在某些条目中,数据具有如下字符串:'Device stemmer 2mm*8mm',我不想更改其他词。
是否有一种使用正则表达式的 Pythonic 方式来修改相互配对的数字和单位的所有可能组合?
解决方案
我用了:
import re
strings = [
"6cm*8cm",
"12mmx15mm",
'Device stemmer 2mm*8mm',
'Device stemming 2mmx8mm'
]
for i in strings:
result = re.sub(r"([0-9]+)(cm|mm)(\*|x)([0-9]+)(cm|mm)", r"\1*\4", i)
print(result)
注意::
([0-9]+)
匹配数字,
(cm|mm)
:匹配单位并|
代表逻辑OR
,
(\*|x)
:匹配\*
或x
作为对的分隔符,
\1
:给出第一组(这里是第一个数字,例如,6)
\4
,:给出第四组(这里是第二个数字,例如, 8)
https://regex101.com/这个答案有帮助。
推荐阅读
- php - 如何在 PHP 中将打开/关闭标签转换为关联数组?
- protractor - 嗨,我想在量角器中的一个自动化测试之间执行一个 .exe 文件
- react-native - 使用后退按钮覆盖将道具发送回任何屏幕
- java - 在 Firestore 中搜索子文档值
- python-3.x - 如何从我的 Stripe webhook 访问项目描述?
- javascript - 是否可以使用视频与网络摄像头创建这种效果?
- python - 在不知道类名的情况下检查单独文件中的类中的变量?
- sql-server-2014 - 删除三个值相同的记录
- python - ResolvePackageNotFound 使用 yml 创建 anaconda 环境时出错
- colors - 每次我开始一个新的 color.xml 文件项目时都会遇到错误