python - 有没有一种更简洁的方法来编写它而无需在插入字符串之前转换为字符串?
问题描述
我对 python 很陌生,所以玩得很好,但是我正在尝试编写一个程序来帮助我编写在不同国家/地区要做的事情的列表。它应该问什么国家,做什么,然后把那个活动放在国家标题下。文本文件是这样列出的:
Bolivia:
- salt pans
Ecuador:
Peru:
Spain:
这段代码确实有效,但我有一种强烈的感觉,有一种简单的方法可以做到这一点。
f = open('travel.txt', 'r+')
contents = f.readlines()
contents = ''.join(contents)
country = input('Country: ')
length = len(cnty)+2
activity = input('Activity: ')
index = contents.find(country+':\n') + length
content = contents[:index] + '- ' + activity + '\n' + contents[index:]
g = open('travel.txt', 'w')
g.write(content)
我曾尝试附加文本文档,但据我了解,它总是附加到末尾。还尝试f.seek()
在某个索引处使用和写入,但这似乎会覆盖,并且无法找到阻止它的方法。
为任何帮助干杯:)
解决方案
你可以做的是像这样创建dict of country
一个list of activities
-
lines = f.readlines()
current_country = ''
countries = {}
for country in lines:
if ":" in country:
current_country = country.replace(":", "").replace("\n", "").strip()
countries[current_country] = []
else:
countries[current_country].append(country.replace("-", "").strip())
您将以这种方式获得的数据将是一个字典。例如,如果数据是 -
Bolivia:
- salt pans
- black
Ecuador:
- green
- white
Peru:
- blue
- black
Spain:
- grey
您将拥有一本字典 -
{'Spain': ['grey'], 'Bolivia': ['salt pans', 'black'], 'Peru': ['blue', 'black'], 'Ecuador': ['green', 'white']}
现在要抢一个国家,你需要做的就是——
countries['Bolivia']
会给你一份西班牙的活动清单
['salt pans', 'black']
而且由于它是一个字典,它只需要O(1)
检索一个国家的活动列表
推荐阅读
- python - Flask - 使用来自 API 端点的参数运行代码
- ios - 如何在 WatchOS 中构建 PagerView
- python - 我可以使用 HTTP 将 Python GUI 连接到网站吗?
- facebook - 如何在同一个 Flutter 应用中使用 Facebook 登录和 Facebook 应用事件?
- php - laravel 多对多多键
- javascript - 我想使用我的 Button 组件将 id 应用于我的元素
- python-3.x - 串行写入字节列表
- python - 是否有根据数据类型为变量着色的 Jupyter 主题?
- c++ - 如何使用 IPC(Unix 域套接字)在 Node.js(首选 Express 模块)服务器和 C++ 应用程序之间进行本地通信
- html - 使用 Bootstrap 条带表而不添加 class="table table-striped"