如何使用python来获取字符串中的信息

时间:2017-07-20 08:13:08

标签: python string pandas

我是python的新手,现在我需要使用它来处理txt文件中的一些数据。

以下是一个示例数据,其中每个'&'之后是一个新索引:

uid=aaa&sid=bbb&bid=ccc&cid=ddd&pid=eee&ver=fff...
uid=aaa2&sid=bbb2&bid=ccc2&cid=ddd2&pid=eee2&ver=fff2...
...

最终结果是将columns=['uid', 'sid', 'bid', 'cid', 'pid', 'ver'...]的DataFrame(带有pandas)和uid的内容作为索引。

我的想法是:从字符串中删除aaabbbccc等,然后将它们插入到数据框中。

我试过了:

st1 = gif?uid=aaa&sid=bbb&bid=ccc&cid=ddd&pid=eee&ver=fff......HTTPasfawfaw

(st1 is the original string)

st2 = st1.split("gif?")[1].split("HTTP")[0]

st3 = st2.split('&')

我的问题是:

  1. 我怎样才能在=之后取出字符串并将它们放入Dataframe?
  2. 我需要处理大量数据文件,是否有更好的方法以更少的时间和更少的内存来实现这一目标?
  3. 提前感谢您的帮助!

3 个答案:

答案 0 :(得分:6)

这是一个URL查询字符串。您应该使用标准库中的urllib模块来解析它。

from urllib.parse import parse_qs  # python3
from urlparse import parse_qs # python2

parse_qs('uid=aaa2&sid=bbb2&bid=ccc2&cid=ddd2&pid=eee2&ver=fff2')

输出:

{'bid': ['ccc2'],
 'cid': ['ddd2'],
 'pid': ['eee2'],
 'sid': ['bbb2'],
 'uid': ['aaa2'],
 'ver': ['fff2']}

答案 1 :(得分:0)

您可以使用$user->phones()->sync([ [ 'id' => 21, 'label' => "primary", 'number' => "5555551212" ], [ 'id' => null, 'label' => "mobile", 'number' => "1112223333" ] ]); 创建所有列和值的regex,然后使用它来创建list,例如:

dataframe

输出:

import re
st = 'uid=aaa&sid=bbb&bid=ccc&cid=ddd&pid=eee&ver=fffuid=aaa2&sid=bbb2&bid=ccc2&cid=ddd2&pid=eee2&ver=fff2'
myData = re.findall(r'(\wid)=(\w+)', st)
prit myData

答案 2 :(得分:0)

txt = open('test.txt').read()

pd.DataFrame(
    [dict([kv.split('=') for kv in l.split('&')]) for l in txt.split('\n')]
)

    bid   cid   pid   sid   uid   ver
0   ccc   ddd   eee   bbb   aaa   fff
1  ccc2  ddd2  eee2  bbb2  aaa2  fff2