我有一個名為 data.txt 的檔案,其中包含以冒號分隔的姓名、郵件和地址。它看起來像這樣:
first_name1:last_name1:[email protected]:address1
first_name2:last_name2:[email protected]:address2
first_name3:last_name3:[email protected]:address3
first_name4:last_name5:[email protected]:address4
first_name5:last_name6:[email protected]:address5
first_name6:last_name7:[email protected]:address6
first_name7:last_name8:[email protected]:address7
我想只讀取地址并將其存盤在名為addresses.txt(一行一個地址)的單獨檔案中。我試過這樣的代碼:
#name of file to store addresses
file_save = open("adresses.txt", 'a')
with open('data.txt', 'r') as file_to_open:
data = file_to_open.read().rsplit(":",1)
file_save.write(data[-1])
print(data) #for testing only
file_to_open.close()
但它給了我這樣的結果:
['first_name1:last_name1:mail1:address1\nfirst_name2:last_name2:mail2:address2\nfirst_name3:last_name3:mail3:address3\nfirst_name4:last_name5:mail4:address4\nfirst_name5:last_name6:mail5:address5\nfirst_name6:last_name7:mail6:address6\nfirst_name7:last_name8:mail7', 'address7']
我做錯了什么?
我試著讓它變成這樣:
address1
address2
address3
...
請幫忙
uj5u.com熱心網友回復:
您可以嘗試split在每一行上使用該方法data
file_save = open("adresses.txt", 'a')
with open('data.txt', 'r') as file_to_open:
data = file_to_open.readlines();
for address in data:
file_save.write(address.split(":")[-1])
file_to_open.close()
uj5u.com熱心網友回復:
data = file_to_open.readlines()
for line in data:
print(line.split(':')[-1])
uj5u.com熱心網友回復:
file_save = open("adresses.txt", 'a')
with open('data.txt', 'r') as file_to_open:
data = file_to_open.read().split("\n") # first split into lines
addresses = [] # initialize address list
for line in data:
address = line.split(":")[-1] # get last element splitted by ":"
addresses.append(address) # save to addresses
file_save.write("\n".join(addresses)) # one new line between each entry
file_save.close() # this needs to be file_save not file_to_open
uj5u.com熱心網友回復:
使用csv和理解:
import csv
with open('data.txt') as rf, open('address.txt', 'w') as wf:
wf.writelines(a[-1] '\n' for a in csv.reader(rf, delimiter=':'))
或者沒有csv:
with open('data.txt') as rf, open('address.txt', 'w') as wf:
wf.writelines(a.split(':')[-1] for a in rf)
uj5u.com熱心網友回復:
我可以幫你。
我的datas.txt檔案:
first_name1:last_name1:[email protected]:address1
first_name2:last_name2:[email protected]:address2
first_name3:last_name3:[email protected]:address3
first_name4:last_name5:[email protected]:address4
first_name5:last_name6:[email protected]:address5
first_name6:last_name7:[email protected]:address6
first_name7:last_name8:[email protected]:address7
我的代碼:
# My datas file
filename = 'datas.txt'
# A function for parse the lines
def get_lines():
with open(filename, 'r', encoding='utf-8') as f:
lines = f.readlines()
return lines
def parse_and_extract():
lines = get_lines()
# First, we should open the result file.
with open('result.txt', 'w', encoding='utf-8') as file:
# Parse the lines and get the addresses
for line in lines:
# Get the address
address = line.split(':')[-1]
# Finally write the address to result file
file.write(address)
parse_and_extract()
最后,我的result.txt檔案:
address1
address2
address3
address4
address5
address6
address7
我希望我能幫助你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334523.html
