繁体   English   中英

Python:将一个字符串解析为多个变量?

[英]Python: Parse one string into multiple variables?

我很确定为此有一个功能,但是我已经搜索了一段时间,因此决定只询问SO。

我正在编写一个Python脚本,用于分析和分析来自输入文件的文本消息。 每行看起来像这样:

2014年10月24日,19:20-Lee White:世界您好!

要么:

4月4日19:20-李·怀特(Lee White):世界您好!

如果未提及datetime中的年份,则表示该消息是在当年发送的。

我想做的是将此字符串解析为多个变量。 理想情况下,我正在寻找一个函数,该函数需要一个输入字符串,一个格式字符串和几个变量来将输出存储在:

foo(input, "MMM DD, YYYY, HH:MM - Sender: Text", &mon, &day, &year, &hour, &minutes, &sender, &text)

Python中是否存在这样的东西?

这使用了非常有用的dateutil库来dateutil日期解析-您可以pip install python-dateutileasy_install python-dateutil :-上拆分数据以获取消息和发件人,然后处理日期文本以获取datetime对象,您可以在其中访问其各种属性以获取所需的组件,例如:

from dateutil.parser import parse

s = 'Apr 4, 19:20 - Lee White: Hello world!'
fst, _, msg = s.rpartition(': ')
date, _, name = fst.partition(' - ')
date = parse(date)
name, msg, date.year, date.month, date.day, date.hour, date.minute
# ('Lee White', 'Hello world!', 2015, 4, 4, 19, 20)

可以使用方法strptime():

import time

strn = 'Apr 4, 19:20 - Lee White: Hello world!'

try:
    date = time.strptime(strn.split(' - ')[0],'%b %d, %Y, %H:%M')
    year = date.tm_year
except ValueError:
    date = time.strptime(strn.split(' - ')[0],'%b %d, %H:%M')
    year = time.asctime().split()[-1]

sender = strn.split('- ')[1].split(':')[0]
text = strn.split(': ')[1]

date.tm_mon, date.tm_mday, year, date.tm_hour, date.tm_min, sender, text

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM