Python从字符串中提取文本

2024-07-05 14:12:06 发布

您现在位置:Python中文网/ 问答频道 /正文

从字符串中提取文本最有效的方法是什么?是否有一些可用的函数或正则表达式,或其他方式?在

For example, my string is below and I want to extract the IDs as well as the ScreenNames, separately.

[User(ID=1234567890, ScreenName=RandomNameHere), User(ID=233323490, ScreenName=AnotherRandomName), User(ID=4459284, ScreenName=YetAnotherName)]

谢谢你!在

编辑:这些是我要拉的文本字符串。我想把他们列在名单上。在

Target_id=1234567890、233323490、4459284 Target_ScreenNames=随机名称此处,另一个随机名称,YetAnotherName


Tags: the方法函数字符串文本名称idtarget
3条回答

要看情况而定。假设你所有的文本都是

TagName = TagValue1, TagValue2, ...

你只需要两个电话就可以分开。在

^{pr2}$

删除多余的空间(也许两个rstrip()/lstrip()调用就足够了),就完成了。或者你可以用正则表达式。他们稍微更强大一些,但在这种情况下,我认为这是个人品味的问题。在

如果您想要更复杂的语法,包括非终结符、终端等等,那么您将需要lex/yacc,这将需要一些解析器背景知识。一个相当有趣的东西玩,但不是你想用来存储程序选项之类的东西。在

import re
str = '[User(ID=1234567890, ScreenName=RandomNameHere), User(ID=233323490, ScreenName=AnotherRandomName), User(ID=4459284, ScreenName=YetAnotherName)]'
print 'Target IDs = ' + ','.join( re.findall(r'ID=(\d+)', str) )
print 'Target ScreenNames = ' + ','.join( re.findall(r' ScreenName=(\w+)', str) )

输出: 目标ID=123456789033323490459284 Target ScreenNames=RandomNameHere,另一个randomname,YetAnotherName

我要使用的正则表达式是:

(?:ID=|ScreenName=)+(\d+|[\w\d]+)

但是,这假设ID仅为数字(\d),用户名仅为字母或数字([\w\d])。在

此regex(当与re.findall组合时)将返回一个匹配列表,这些匹配项可以按如下方式迭代和排序:

^{pr2}$

相关问题 更多 >