鱼C论坛

 找回密码
 立即注册
查看: 353|回复: 6

按照要求分割给定的字符串

[复制链接]
最佳答案
1 
发表于 2018-1-13 11:41:35 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
字符串信息如下:
1   (D)      0001    element: 1-11-1   1-11-2   1-11-3   1-11-4   1-11-5   1-11-6   
                               1-11-7   1-11-8   1-11-9   1-11-10  1-11-11  1-11-12  
                               1-11-13  1-11-14  1-11-15  1-11-16  1-11-17  1-11-18  
-------------------------------------------------------------------------------------------------------
10  (D)      0010    element: 1-11-1   
                       no-element: 1-11-2   
-------------------------------------------------------------------------------------------------------
100 (D)      0100    element: 1-11-3   
                       no-element: eth1-11-4   
-------------------------------------------------------------------------------------------------------
需要处理成一个列表:
['1   (D)      0001    element: 1-11-1   1-11-2   1-11-3   1-11-4   1-11-5   1-11-6  1-11-7   1-11-8   1-11-9   1-11-10  1-11-11  1-11-12  1-11-13  1-11-14  1-11-15  1-11-16  1-11-17  1-11-18 ','10  (D)      0010    element: 1-11-1 no-element: 1-11-2','100 (D)      0100    element: 1-11-3 no-element: eth1-11-4']
我尝试使用split方法,但是由于原始字符串中\n在每一行后边都有,所以直接split的话,会得到一个10个元素的列表,不是最终我想要的效果。
哪位大神能帮忙看看怎么处理才能实现只要有效元素的列表?
最佳答案
190 
发表于 2018-1-13 12:01:04 | 显示全部楼层
把原始字符串里的 ',' 号去掉能解决你的问题吗?str.replace(',','')
最佳答案
0 
发表于 2018-1-13 12:39:31 | 显示全部楼层
试试这个,老铁
没写全,不过你看一下就知道后面要怎么写了
  1. a='''1   (D)      0001    element: 1-11-1   1-11-2   1-11-3   1-11-4   1-11-5   1-11-6   
  2.                                1-11-7   1-11-8   1-11-9   1-11-10  1-11-11  1-11-12  
  3.                                1-11-13  1-11-14  1-11-15  1-11-16  1-11-17  1-11-18 '''
  4. i = a.split()
  5. j = ""
  6. print(i)
  7. for x in i:
  8.     j+=(x+" ")
  9. print(j)
复制代码
最佳答案
1 
 楼主| 发表于 2018-1-13 16:34:31 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-1-13 12:01
把原始字符串里的 ',' 号去掉能解决你的问题吗?str.replace(',','')

原始字符串中没有','啊。。。
最佳答案
1 
 楼主| 发表于 2018-1-13 16:41:19 | 显示全部楼层
本帖最后由 安以陌 于 2018-1-13 16:42 编辑
jack_9957 发表于 2018-1-13 12:39
试试这个,老铁
没写全,不过你看一下就知道后面要怎么写了


谢谢帮助,我已经解决这个问题了,如下:
原始字符串为return_info
alist = return_info.split('-------------------------------------------------------------------------------------------------------')
blist=[ s.replace('\n','') for s in alist if s.replace('\n','') != '']
最佳答案
42 
发表于 2018-1-13 16:58:03 | 显示全部楼层
本帖最后由 yjsx86 于 2018-1-13 17:27 编辑
  1. import re

  2. S = '''1   (D)      0001    element: 1-11-1   1-11-2   1-11-3   1-11-4   1-11-5   1-11-6   
  3.                                1-11-7   1-11-8   1-11-9   1-11-10  1-11-11  1-11-12  
  4.                                1-11-13  1-11-14  1-11-15  1-11-16  1-11-17  1-11-18  
  5. -------------------------------------------------------------------------------------------------------
  6. 10  (D)      0010    element: 1-11-1   
  7.                        no-element: 1-11-2   
  8. -------------------------------------------------------------------------------------------------------
  9. 100 (D)      0100    element: 1-11-3   
  10.                        no-element: eth1-11-4   
  11. -------------------------------------------------------------------------------------------------------'''

  12. S = S.replace('\n','')
  13. S = re.sub(' {7,}','   ',S)
  14. S = re.findall(r'(\d+ *\(D\).*?)-{2,}',S)
  15. S = [x.strip() for x in S]
  16. print(S)
复制代码


#结果
['1   (D)      0001    element: 1-11-1   1-11-2   1-11-3   1-11-4   1-11-5   1-11-6  1-11-7   1-11-8   1-11-9   1-11-10  1-11-11  1-11-12  1-11-13  1-11-14  1-11-15  1-11-16  1-11-17  1-11-18', '10  (D)      0010    element: 1-11-1  no-element: 1-11-2', '100 (D)      0100    element: 1-11-3  no-element: eth1-11-4']
最佳答案
190 
发表于 2018-1-14 17:12:27 | 显示全部楼层
安以陌 发表于 2018-1-13 16:34
原始字符串中没有','啊。。。

不好意思,看错了。
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号 )

GMT+8, 2018-7-16 04:58

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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