将字符串拆分为多个单词
Posted
技术标签:
【中文标题】将字符串拆分为多个单词【英文标题】:Splitting string into multiple words 【发布时间】:2022-01-18 08:30:14 【问题描述】:我有多个股票名称如下
'ADANIENT29APR211120'
'AARTIIND29APR211360'
'ADANIPORTS29APR21730'
我打算做的是将股票名称,日期,价格分开并打印出来,如图所示
'ADANIENT 29APR21 1120'
'AARTIIND 29APR21 1360'
'ADANIPORTS 29APR21 730'
现在我知道了一个名为 datefinder 的模块,它可以帮助我在 python 中提取日期
我是这样使用的:
import datefinder
string_with_dates = '''
ADANIENT29APR211120PE
'''
matches = datefinder.find_dates(string_with_dates)
for match in matches:
print(match)
这给我的输出是
runfile('C:/Users/hozef/AppData/Local/Temp/untitled0.py', wdir='C:/Users/hozef/AppData/Local/Temp')
2021-04-29 21:11:20
我的问题是,我现在使用 datefinder 提取字符串中的日期,如何从输入字符串中提取特定股票的名称和价格
【问题讨论】:
如果您为输入定义约束,这很容易。如果您设置了您的股票代码不能包含数字的约束,您可以应用正则表达式甚至根据数字的位置中断并创建单独的字段。 【参考方案1】:使用re.findall
:
inp = ['ADANIENT29APR211120', 'AARTIIND29APR211360', 'ADANIPORTS29APR21730']
for x in inp:
parts = re.findall(r'^([A-Z]+)(\d2[A-Z]3\d2)(\d+)$', x)[0]
print(' '.join(parts))
打印出来:
ADANIENT 29APR21 1120
AARTIIND 29APR21 1360
ADANIPORTS 29APR21 730
这里使用的正则表达式表示匹配:
^
([A-Z]+) stock name in all caps
(\d2[A-Z]3\d2) 2 digit day, 3 letter all caps month, 2 digit year
(\d+) integer price
$
【讨论】:
以上是关于将字符串拆分为多个单词的主要内容,如果未能解决你的问题,请参考以下文章
如何在 bash shell 中将一个字符串拆分为多个字符串,至少用一个空格分隔?
2021-10-15:单词拆分。给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你