找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 89|回复: 3

[求助] 急!python按条件合并多行数据

1

主题

1

帖子

1

积分

贫民

积分
1
JLOGAN 发表于 2017-6-19 19:39:37 | 显示全部楼层 |阅读模式
各位前辈,现在遇到一个棘手的问题,求大神指教!
我需要导入日志数据,但是格式比较复杂,其中含有很多类似于:
  1. #####AA####
  2. 123
  3. 456
  4. 789
  5. ####BB####
  6. 11
  7. 22
  8. ########
复制代码
我想要得到:
  1. AA:123456789
  2. BB:1122
复制代码
还有就是类似于:
  1. ###CC#####
  2. a b c
  3. 1 2 3
  4. ###DD###
  5. a b
  6. 1 2
复制代码
要得到:
  1. CC:
复制代码
请问用python怎么实现?








回复

使用道具 举报

2

主题

361

帖子

361

积分

版主

Rank: 7Rank: 7Rank: 7

积分
361

最佳新人热心会员默默耕耘

whydo1 发表于 2017-6-19 22:09:57 | 显示全部楼层
这个不用python. 用文本编辑器的替换功能就可以实现.

以word为例,
1.把##替换为#(反复替换直到没有连续的#).
2.把([a-zA-Z]{1,3})#替换为\1: (需要在替换窗口中选择使用通配符)
3.把^p替换为空
4.把#替换为^p
python3.4.4, win10
回复 支持 反对

使用道具 举报

0

主题

15

帖子

15

积分

贫民

积分
15
zxy 发表于 7 天前 | 显示全部楼层
第二种情况的规则是什么?直接打印CC?
回复 支持 反对

使用道具 举报

1

主题

11

帖子

11

积分

贫民

积分
11
hz_oracle 发表于 7 天前 | 显示全部楼层
第一种情况:
out_dict = {}
line_value = ""
line_key = ""
with file('test.txt','r') as f:
    for line in f:
        line = line.strip("\n")
        if line.startswith("#") and line.endswith("#"):
            if line_key:
                out_dict[line_key]=line_value
            line_key = line.strip("#")
            line_value = ""
            continue
        else:
            temp = line.strip("\n")
            line_value += temp
print out_dict


第二种情况没看懂。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表