Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将一个字符串解析为多个变量?_Python_Parsing - Fatal编程技术网

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

Python:将一个字符串解析为多个变量?,python,parsing,Python,Parsing,我很确定这有一个函数,但我已经搜索了一段时间,所以决定简单地问一下 我正在编写一个Python脚本,用于解析和分析输入文件中的文本消息。每一行看起来像这样: 2014年10月24日19:20-李怀特:你好,世界 或: 4月4日19:20-李怀特:你好,世界 如果未提及datetime中的年份,则表示该消息是在当前年份发送的 我想做的是把这个字符串解析成多个变量。理想情况下,我正在寻找一个函数,该函数采用输入字符串、格式字符串和两个变量来存储输出: foo(输入“MM-DD,YYYY,HH:MM-

我很确定这有一个函数,但我已经搜索了一段时间,所以决定简单地问一下

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

2014年10月24日19:20-李怀特:你好,世界

或:

4月4日19:20-李怀特:你好,世界

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

我想做的是把这个字符串解析成多个变量。理想情况下,我正在寻找一个函数,该函数采用输入字符串、格式字符串和两个变量来存储输出:

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:是的,那会有用的!您必须执行一些正则表达式或单个字符串拆分(在本例中更可能是拆分),据我所知,不存在这样的库函数。您几乎窃取了我的想法;)@帕德雷克我相信你会在心里原谅我的可能需要几个月的时间,但我会克服的;)