首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中通过特定的值索引拼接字符串列表

问在python中通过特定的值索引拼接字符串列表
EN

Stack Overflow用户
提问于 2018-10-24 11:14:21
回答 2查看 577关注 0票数 0

我有一系列格式如下的文本文件

代码语言:javascript
复制
Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
...
END

其中可以有数量可变的苹果事务--一个文本文件可能有2个,其他文本文件可能有6个--但所有文件的格式都是相同的。我想在本质上存储事务摘要和结束之间的行。

我首先咨询了this method,它允许我打印这些行,但我不知道如何存储这些行。

取而代之的是,我决定只读取整个文本文件,然后存储,然后裁剪所需的数据

代码语言:javascript
复制
with open(filename) as f:
    data = f.readlines()
f.close

这样我就可以拼接这个字符串列表了。我遇到的问题是,虽然我知道从哪里开始拼接(1行索引),但由于每个文本文件都有可变数量的事务,我不知道如何选择其中包含"END“字符串的特定索引。

任何意见都将不胜感激--谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-10-24 11:30:02

data.txt

代码语言:javascript
复制
Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
END

代码

代码语言:javascript
复制
with open('data.txt') as file:
    lines = file.readlines()

transaction = []
for line in lines[1:-1]:
    tokens = line.split(' ')
    transaction.append((
        tokens[0], 
        tokens[3], 
        int(tokens[4]),
        int(tokens[7].rstrip('$\n')) ))

print(transaction)

结果

代码语言:javascript
复制
[('Joe', 'Mindy', 5, 6), ('Mark', 'Alex', 3, 5)]
票数 0
EN

Stack Overflow用户

发布于 2018-10-25 15:30:43

您可以尝试使用regex。

代码语言:javascript
复制
import re

string = """ 
Transaction Summary
Joe buys from Mindy 5 apples for 6$
Mark buys from Alex 3 apples for 5$
END
"""
print(re.findall(r"(\w+) buys from (\w+) (\d+) apples for (\d+)",string))
# [('Joe', 'Mindy', '5', '6'), ('Mark', 'Alex', '3', '5')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52960582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档