2024-09-21 05:43:30 发布
网友
我正试图从字符串中提取字母,但无法正确地完成。任何帮助都将不胜感激
字符串:20200702_abcd_ef_aed_usd_cdee_hgd.csv 应为:abcd_ef_aed_usd_cdee_hgd 实际:_abcd_ef_aed_usd_cdee_hgd
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()
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]
[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
re.sub(r'^\d+_|\.[^.]*$', '', s)
或者,如果不需要进行数字检查:
re.sub(r'^[^_]+_|\.[^.]*$', '', s)
见aPython demo和regex demo
详细信息
^[^_]+_
|
\.[^.]*$
.
尝试:
re.search('[a-z][a-z_]+', "20200702_abcd_ef_aed_usd_cdee_hgd.csv").group()
由于在字符串的开头不需要任何下划线,因此必须指定
[a-zA-Z]
,然后在剩余的[_a-zA-z]+
后面指定, 更正是在开始处添加[a-zA-Z]
在这里,您实际上不必依赖正则表达式。您可以get the file name without extension,然后使用
_
将其拆分为两部分,并得到最后一部分:对于regex,您还可以尝试一种
re.sub
解决方案,该解决方案还可以确保仅从开始处删除数字+_
:或者,如果不需要进行数字检查:
见aPython demo和regex demo
详细信息
^[^_]+_
-字符串的开头,除_
之外的一个或多个字符|
-或\.[^.]*$
-.
,除.
之外的任何0个或多个字符,然后是字符串的结尾李>尝试:
相关问题 更多 >
编程相关推荐