小编Wen*_*enT的帖子

使用Python中的正则表达式对数据进行分组

我有一些像这样的原始数据:

Dear   John    Buy   1 of Coke, cost 10 dollars
       Ivan    Buy  20 of Milk
Dear   Tina    Buy  10 of Coke, cost 100 dollars
       Mary    Buy   5 of Milk
Run Code Online (Sandbox Code Playgroud)

数据规则是:

  • 不是每个人都会从"亲爱的"开始,而如果有的话,它必须以成本结束

  • 该项目可能并不总是正常的单词,可以无限制地写入(包括str,num等)

我想分组信息,我试图使用正则表达式.这就是我之前尝试过的:

for line in file.readlines():
    match = re.search(r'\s+(?P<name>\w+)\D*(?P<num>\d+)\sof\s(?P<item>\w+)(?:\D+)(?P<costs>\d*)',line)
    if match is not None:
        print(match.groups())
file.close()
Run Code Online (Sandbox Code Playgroud)

现在输出看起来像:

('John', '1', 'Coke', '10')
('Ivan', '20', 'Milk', '')
('Tina', '10', 'Coke', '100')
('Mary', '5', 'Milk', '')
Run Code Online (Sandbox Code Playgroud)

上面显示的是我想要的.但是,如果item被一些奇怪的字符串替换A1~A10,有些输出会得到错误的信息:

('Ivan', '20', 'A1', '10')
('Mary', '5', 'A1', '10')
Run Code Online (Sandbox Code Playgroud)

我认为常量格式item field …

python regex

8
推荐指数
3
解决办法
337
查看次数

如何在python中合并数据

我只是学习python不久.我尽力表示我的数据看起来更好,就像以前一样.现在我有一些tuple数据类型,如下所示:

('John', '5', 'Coke')
('Mary', '1', 'Pie')
('Jack', '3', 'Milk')
('Mary', '2', 'Water') 
('John', '3', 'Coke')
Run Code Online (Sandbox Code Playgroud)

我想知道每个人买了多少件物品.

假设不同的名字是不同的人.

那么我怎么能这样得到如下信息:

 John: 8 Coke 
 Mary: 1 Pie 
 Mary: 2 Water 
 Jack: 3 Milk
Run Code Online (Sandbox Code Playgroud)

我不知道我现在怎么办.即使是愚蠢的人也无法想出任何方法.

python merge

1
推荐指数
1
解决办法
301
查看次数

标签 统计

python ×2

merge ×1

regex ×1