regex - 如何在正则表达式值之后拉出部分字符串
问题描述
尝试在将变量正则表达式值写入 csv 之后提取字符串的一部分
我有一个脚本可以清除重要信息的报告。报告的编写方式有 MGRS 网格,后跟一个数字。例如。该报告将有几行如下所示:(MGRS: 12ABC12345678//, 23 个单词后跟更多单词 MGRS: 98ZYX87654321// 17 个更多单词)。我正在尝试创建一个只有 MGRS 网格和以下数字的 csv。
MGRS_Regex= re.compile('\d{1,2}[A-Za-z]\s?[A-Z-a-z]{2}\s?\d{2,5}\s?{2,5}')
grid_list = []
for f in file_list:
with open(f,'r')as csv_file:
csv_reader = csvDictReader(csv_file)
for row in csv_reader:
for key, value in row.items():
if key == 'text_field': ##text_field is the record##
grid_pull = MGRS_Regex.findall(value)
for grid in grid_pull:
grid_list.append(grid)
for grid in grid_list:
if field == 'important number': ## field is the key the new csv file##
text = row.get('text_field')
grid_search = text.find(grid)
important_number = text[grid_search : 3]
important_info.update({field:important_number})
期望得到一个以变量字段“name”作为键,切出的 str 作为值的字典
解决方案
我会提供这个正则表达式,希望它就足够了
(?i)\d{1,2}[a-z]\s*[a-z]{2}\s*\d{2,5}\s*\d{2,5}//\s*\d+(?:\s*(?:years|days|weeks))?
https://regex101.com/r/Dwoz3a/1
展开
(?i)
\d{1,2} [a-z] \s* [a-z]{2} \s* \d{2,5} \s* \d{2,5}
// \s* \d+
(?:
\s*
(?: years | days | weeks )
)?
推荐阅读
- php - 在刀片中,我想打印除来自模型的 $id 项目之外的所有项目
- python - 在 pandas 中的 groupby 之后转置一些列
- reactjs - 如何访问子元素的引用
- android - 如何在同一页面上的 Fragment 内创建具有 3 个 Fragment 的 ViewPager?
- javascript - 离开组件后将值保存在数组中
- javascript - 将功能分配给对象
- android - 当我尝试通过我的应用程序访问 api 时收到 403 错误
- flutter - 自定义小部件右侧的 RenderFlex 溢出
- influxdb - 如何根据测量名称将数据写入不同的数据库
- c# - 在 LINQ 中将 DateTime 与毫秒进行比较