一个匹配正则的函数

Lockspace 2009-12-22 12:14:54
大家好,我对Python不是太了解,但是现在需要写一个函数,请教一下

这是一个正则匹配字符串的问题:

myString = "a:1, b:2, c:3, d:4"
Temp1 = 0
Temp2 = 0
...
#temp1,temp2...用来存放匹配到的字符串比如a:([-+]?\d+)匹配到1,temp1即为1,但是temp*的数量不一定,根据需要,可能会有temp3,或者temp4之类的来存放匹配到的其他值,temp*只是例子,实际时变量不一定是这种有规律的名字,可能是任意变量名.

result = re.match( "a:([-+]?\d+),\s*b:([-+]?\d+)\s*", myString)

我需要一个函数scan()来做匹配和结果赋值,因为要匹配的值数量不一定,所以我想temp1,temp2这些存值的变量应该作为一个数据结构来作为参数吧,但是要求函数执行完毕要可以直接实用这些变量,比如 a=temp1

匹配的部分我已经弄明白了,就是不知道如何给scan()传递这些存值变量并赋值,注意存值变量数量不定

谢谢!
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lockspace 2009-12-22
  • 打赏
  • 举报
回复
在我的程序是想自动生成一段python脚本,太复杂的话不好控制,我还是换个思路吧,谢谢几位了
angel_su 2009-12-22
  • 打赏
  • 举报
回复
用下标Temp[0],Temp[1]...就能用了吧。如果是说要用原本a b c d名称操作的话,可以把名字也抽出当key装入一个字典里来用...

import re
myString = "a:1, b:2, c:3, d:4"
myVar = {}
for each in re.findall(r'(\w):([+-]?\d)', myString):
myVar[each[0]] = each[1]
print myVar

结果:
{'a': '1', 'c': '3', 'b': '2', 'd': '4'}
notax 2009-12-22
  • 打赏
  • 举报
回复

def show_args(*args, **kw ):
print args
print kw


show_args(8, a='1', b='2')

"""gives
(8,)
{'a': '1', 'b': '2'}
"""

show_args(9, a='1', b='2', c='3')
""" gives
(9,)
{'a': '1', 'c': '3', 'b': '2'}
"""

my_arg = (1, 2, 3)
show_args(*my_arg)
"""gives
(1, 2, 3)
{}
"""


my_dict = {'a':'A', 'b':'B'}
show_args(*my_arg, **my_dict)
""" gives
(1, 2, 3)
{'a': 'A', 'b': 'B'}
"""
Lockspace 2009-12-22
  • 打赏
  • 举报
回复
正则的部分已经搞定了,现在的问题简单来说,就是如何把不定数量的几个变量作为一个参数传给函数,由函数给几个变量分别赋值., 有办法吗?
angel_su 2009-12-22
  • 打赏
  • 举报
回复
Temp = re.findall(":([-+]?\d+)", myString)
dskit 2009-12-22
  • 打赏
  • 举报
回复
http://www.jb51.net/article/15707_2.htm

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧