Python:将一个字符串解析为多个变量?
我很确定这有一个函数,但我已经搜索了一段时间,所以决定简单地问一下 我正在编写一个Python脚本,用于解析和分析输入文件中的文本消息。每一行看起来像这样: 2014年10月24日19:20-李怀特:你好,世界 或: 4月4日19:20-李怀特:你好,世界 如果未提及datetime中的年份,则表示该消息是在当前年份发送的 我想做的是把这个字符串解析成多个变量。理想情况下,我正在寻找一个函数,该函数采用输入字符串、格式字符串和两个变量来存储输出:Python:将一个字符串解析为多个变量?,python,parsing,Python,Parsing,我很确定这有一个函数,但我已经搜索了一段时间,所以决定简单地问一下 我正在编写一个Python脚本,用于解析和分析输入文件中的文本消息。每一行看起来像这样: 2014年10月24日19:20-李怀特:你好,世界 或: 4月4日19:20-李怀特:你好,世界 如果未提及datetime中的年份,则表示该消息是在当前年份发送的 我想做的是把这个字符串解析成多个变量。理想情况下,我正在寻找一个函数,该函数采用输入字符串、格式字符串和两个变量来存储输出: foo(输入“MM-DD,YYYY,HH:MM-
foo(输入“MM-DD,YYYY,HH:MM-发件人:文本”、&mon、&day、&year、&hour、&minutes、&Sender、&Text)
Python中是否存在这样的东西?这使用了非常有用的
dateutil
库来简化日期解析-您可以pip安装Python dateutil
或easy\u安装Python dateutil
it。拆分:
和-
上的数据以获取消息和发件人,然后处理日期文本以获取日期时间
对象,您可以在其中访问其各种属性以获取所需的组件,例如:
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
你的意思是解析字符串并提取那些变量吗?如果不存在这样的东西,那么编写一个应该相当容易。。。。。你会对这样的工作感到高兴吗:周一,一天,一年,一小时,一分钟,发送者,text=foo(输入)?@justcompile:是的,那会有用的!您必须执行一些正则表达式或单个字符串拆分(在本例中更可能是拆分),据我所知,不存在这样的库函数。您几乎窃取了我的想法;)@帕德雷克我相信你会在心里原谅我的可能需要几个月的时间,但我会克服的;)