python - python - 如何计算python文本文件中相同关键字出现2次的行数?
问题描述
我有一个 python抓取脚本来获取一些即将举行的音乐会的信息,无论有多少场音乐会出现,它每次都是相同的文本模式,唯一的区别是有时它会在门票价格仍然显示时显示额外的一行可以预订,例如以下示例:
LIVE 01/01/99 9PM
Iron Maiden
Madison Square Garden
New York City
LIVE 01/01/99 9.30PM
The Doors
Staples Center
Los Angeles
LIVE 01/02/99 8.45PM
Dr Dre & Snoop Dogg
Staples Center
Los Angeles
Book a ticket now for $99,99
LIVE 01/02/99 9PM
Diana Ross
City Hall
New York City
Book a ticket now for $79,99 ect...
我需要计算每个文本块的行数并检查它是 4 行还是 5 行,所以我想的是计算每个块的第一个单词(“LIVE”)的出现,然后添加一个if 语句对 2 个类别之间的块进行排序(4 行块和 5 行块)
if 语句部分并不难,但我只是不知道如何做第一部分,也许是 readlines 然后当一行有关键字“LIVE”时,添加行位置(提供的数据样本将是行1,第5行,第9行,第14行,这里我们可以清楚地看到前2个块是4行,而第3个是5行)然后if语句部分将它们整理出来
任何帮助将不胜感激,谢谢!
用我的代码想法编辑,我希望它会更清楚,我需要获取变量 line_number 和 gap_each_line 的代码:
with open('concerts_list.txt', 'r') as file:
reading_file = file.read()
lines = reading_file.split('\n')
for "LIVE" in lines:
line_number = #the part where I'm stuck to tell each line number
where the word "LIVE" appears. output desired: [0, 4, 8, 13]
gap_each_line = #calculate the gap between each number of previous
variable line_number. output desired: [4, 4, 5]
if gap == 4 for gap in gap_each_line:
dates = [i for i in lines [0::4]]
elif gap == 5 for gap in gap_each_line:
dates = [i for i in lines [0::5]]
解决方案
您可以使用read_csv of pandas
模块。
我希望您的整个问题(查找日期等)都可以使用pandas
.
下面是查找以“LIVE”开头的行之间的行差异的代码
import pandas as pd
df = pd.read_csv('/Users/prince/Downloads/test3.csv', sep='~~~', header=None, engine='python')
df.columns = ['Details']
df['si_no'] = df['Details'].str.startswith('LIVE').cumsum()
gaps = df.groupby('si_no').apply(lambda x : len(x)).values
print(gaps)
它会打印
[4 4 5 5]
推荐阅读
- node.js - JSON 服务器 - 使用 cronjob 更新数据库
- r - 第一页和其他页的标题
- c# - 创建一个随机数组并获取索引中的值以及输入值但获取的信息错误时的索引
- c++ - 将标记转换为 char* const* 时,使用 boost 标记字符串失败
- sql-server - 使用没有凭据提示的 Powershell 将数据加载到 SQL Server
- python - 带有 xpath 的继承字段不会出现在最终视图中 - Odoo 12
- python - 类应该包括可以在 y 中的所有有效标签
- javascript - 如何将 Excel 文件转换为文件超过 20 MB 的 Google 表格?
- javascript - JavaScript:setAttribute 有效,但 .style 无效
- amazon-web-services - Terraform aws_route_table 流量方向层次结构