gpt4 book ai didi

python - 从脚本中解析行

转载 作者:行者123 更新时间:2023-11-28 22:53:57 25 4
gpt4 key购买 nike

我需要从代表服务器任务的文件中读取行。这些线由几对组成,其中一些是重复的。我需要解析它们,消除重复项并将它们分成 2 组以便更好地执行。这是 aline 的样子:

'task1'->3124, 'task2'->7743, 'task1'->3124, 'task3'->3456, 'task4'->23984

我要获取:

task1 task2
task3 task4

我是 Python 的新手(只有 C 经验),希望在我的代码中使用更多 pythonic 函数方面得到一些帮助。这是我当前的代码(仍然不完整但已经有错误):

def findgroups(s):
group=[]
n=[]
for i in range(len(s)):
group.append(s[i])
if s[i]==',':
n.append(group)
group=[]
return n

def finduniques(groups):
unique=[]
for i in range(len(groups)):
if groups.count(groups[i])==1:
unique.append(groups[i])
return unique

def makegroups(groups):
group1=[]
group2=[]
for i in range(len(groups)):
if i%2==0:
group1.append(groups[i])
if i%2==1:
group2.append(groups[i])

def printgroups(group1, group2):
for i in range(len(group1)):
for j in range(len(group2)):
if i==j:
print group1[0],group2[0]


line = "'task1'->3124, 'task2'->7743, 'task1'->3124, 'task3'->3456, 'task4'->23984"
groups = find_groups(line)
uniques = find_uniques(groups)
pairs = makegroups(uniques)
print printgroups(pairs)

最佳答案

你可以使用:

import re
from itertools import izip_longest

line = "'task1'->3124, 'task2'->7743, 'task1'->3124, 'task3'->3456, 'task4'->23984"
tasks = set(re.findall("'(.*?)'->\d+", line))
for t1, t2 in izip_longest(*[iter(tasks)] * 2, fillvalue=''):
print t1, t2
# task1 task2
# task3 task4
  • 查找单引号内的所有内容,然后是 -> 和一些数字
  • 放入一个集合以消除重复
  • 两两分组,有奇数的留空字符串 ''

关于python - 从脚本中解析行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18747329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com