我在以下邏輯方面遇到了麻煩。
我有一個外部 txt 檔案,例如:characters.txt:
James, 24, blue, yes
Liam, 29, brown, yes
Michael, 40, brown, yes
如果我想將第 2 行中的“是”更改為“否”,我該怎么做?
uj5u.com熱心網友回復:
我認為我的解決方案是最簡單的。
- 您應該首先將characters.txt的行讀入如下串列:
lines = open("char.txt", "r").readlines()
- 接下來,您需要更改您想要的文本(是到否),它位于第 2 行:
lines[1] = lines[1].replace("yes", "no")
- 最后,您需要將所有內容寫回檔案:
open("char.txt", "w").writelines(lines)
最終代碼:
lines = open("char.txt", "r").readlines()
lines[1] = lines[1].replace("yes", "no")
open("char.txt", "w").writelines(lines)
如果其他小伙伴有什么要補充的,歡迎評論。謝謝。
uj5u.com熱心網友回復:
您可以逐行閱讀,然后更改第二行。或者你可以用 pandas 作為 csv 檔案來讀取它,然后改變它。
f = open("characters.txt", "r")
print(f.readlines())
然后寫回來。
或使用熊貓(更好)
data=pandas.read_csv('character.txt', sep=',names=['name', 'age', 'color','answer']))
然后,您可以通過以下方式訪問答案列:
answers = data['answer']
answers[1] = 'no'
data['answer'] = answers
這只是一個偽代碼,如果你愿意,這可以做很多
uj5u.com熱心網友回復:
據我了解,最好的解決方案是將檔案讀入 Python(陣列或 df),在那里修改并覆寫原始檔案;不能直接修改外部檔案。
請在此處查看答案:如何修改文本檔案?
PS。您可能希望將 txt 內容格式化為代碼。
uj5u.com熱心網友回復:
由于您的文本檔案類似于 CSV,因此您可以使用內置csv模塊。
from io import StringIO
import csv
# your input file, wrapped in StringIO to avoid writing it to file for me
s_in = StringIO("""\
James, 24, blue, yes
Liam, 29, brown, yes
Michael, 40, brown, yes
""")
# read file contents
reader = csv.reader(s_in)
lines = list(reader)
# prepare output file, might be same as input.
# again using StringIO for me to avoid writing to file, use with/open
s_out = StringIO()
# create csv writer, iterate through data, replace yes -> no on line 2, write
writer = csv.writer(s_out)
for i, line in enumerate(lines, 1):
if i == 2:
line[-1] = " no" # note the space here since delimiter is ", "
writer.writerow(line)
# print the contents of the file
print(s_out.getvalue())
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/478280.html
