需要使用python正则表达式提取字符的帮助吗

2024-09-21 05:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从字符串中提取字母,但无法正确地完成。任何帮助都将不胜感激

字符串:20200702_abcd_ef_aed_usd_cdee_hgd.csv
应为:abcd_ef_aed_usd_cdee_hgd
实际:_abcd_ef_aed_usd_cdee_hgd

这是代码,任何帮助都可以删除前导的_

import re
re.search('[A-Z_]+', "20200702_abcd_ef_aed_usd_cdee_hgd.csv").group()

Tags: csv字符串代码importresearch字母usd
3条回答
import re
x = "20200702_abcd_ef_aed_usd_cdee_hgd.csv"
y = re.search(r"[a-zA-Z][_A-Za-z]+",x)
print(y[0])

由于在字符串的开头不需要任何下划线,因此必须指定[a-zA-Z],然后在剩余的[_a-zA-z]+后面指定, 更正是在开始处添加[a-zA-Z]

在这里,您实际上不必依赖正则表达式。您可以get the file name without extension,然后使用_将其拆分为两部分,并得到最后一部分:

import os
s = "20200702_abcd_ef_aed_usd_cdee_hgd.csv"
print( os.path.splitext(s)[0].split('_', 1)[-1] )

对于regex,您还可以尝试一种re.sub解决方案,该解决方案还可以确保仅从开始处删除数字+_

re.sub(r'^\d+_|\.[^.]*$', '', s)

或者,如果不需要进行数字检查:

re.sub(r'^[^_]+_|\.[^.]*$', '', s)

见aPython demoregex demo

详细信息

  • ^[^_]+_-字符串的开头,除_之外的一个或多个字符
  • |-或
  • \.[^.]*$-.,除.之外的任何0个或多个字符,然后是字符串的结尾

尝试:

re.search('[a-z][a-z_]+', "20200702_abcd_ef_aed_usd_cdee_hgd.csv").group()

相关问题 更多 >

    热门问题