python - 如何根据选择的名称更改文件中的特定行?
问题描述
我有一个文本文件,其中列出了数字和名称。每个数字都属于一个特定的名称,并且它们属于同一行。文件的内容,如下所示:
Kari 98654321
Liv 99776655
Ola 99112233
Anne 98554455
Jens 99776612
Per 97888776
Else 99455443
Jon 98122134
Dag 99655732
Siv 98787896
(注意*名称和数字由新行分隔,出于某种原因,它只是将所有内容粘贴到此处)假设我选择“Else”作为所选名称,我希望能够更新文件并更改被选中的人的号码和一个新的选中号码
我在 python 方面没有那么有经验,所以我在寻找解决这个问题的方法时非常费劲,但是我尝试使用.replace()
,.readline()
和其他函数来用其他东西替换内容,但我只是继续替换整个文件
import os
def endreNummer():
with open("hei.txt", "a+"):
endreNummer()
如果我选择“Kari”作为名称,选择“1881”作为新号码,则预期的输出。输出如下所示:
Kari 1881
Liv 99776655
Ola 99112233
Anne 98554455
Jens 99776612
Per 97888776
Else 99455443
Jon 98122134
Dag 99655732
Siv 98787896
解决方案
给你,这应该可以。
正如 Mateen Ulhaq 在评论中提到的那样,如果不重写整个文件,就没有合理的方法可以做到这一点,所以这个解决方案就包括了这一点。但是,仅当在初始文件中找到所选名称时,它才会重写文件。
这也不能处理输入数字不是真正数字的情况,因此如果有人输入notnumber123
选择的数字,它仍然会被写入文件。
filepath = 'hei.txt'
choosen_name = input('Choose name: ')
choosen_num = input('Choose number: ')
with open(filepath) as f:
content = f.readlines()
file_changed = False
new_content = []
for line in content:
if choosen_name in line:
new_content.append('{} {}\n'.format(choosen_name, choosen_num))
file_changed = True
else:
new_content.append(line)
if file_changed:
with open(filepath,'w') as f:
for line in new_content:
f.write('{}'.format(line))
else:
print('Choosen name not found.')
推荐阅读
- sql - 将序列值重置为数据库中的最大值
- python - 使用 python 从 pgs 字幕中获取项目计数
- exception - 获取连接时发生异常:oracle.ucp.UniversalConnectionPoolException:无法从数据源获取连接
- wordpress - 在 Wordpress 插件上为 Rainloop 设置 SMTP
- c# - 将 C# 控制台应用程序发布为独立的可执行文件
- javascript - 使用 setInterval 和 setimeout 使 3 个组件依次加载
- javascript - 使用节点js读取excel文件
- r - dbplyr 生成意外的 SQL 查询
- multithreading - 调用回调函数时如何避免堆栈溢出?
- php - 根据 Order Stock 表减少 StockIN 表的库存数量