从文件中读取行并在 Python 中的最后一个分隔符处拆分行并将其保存到另一个文件
Read lines from file and split line on last delimiter in Python and save it to another file
我有一个名为 data.txt 的文件,其中包含用冒号分隔的姓名、邮件和地址。它看起来像这样:
first_name1:last_name1:mail1@mail.com:address1
first_name2:last_name2:mail2@mail.com:address2
first_name3:last_name3:mail3@mail.com:address3
first_name4:last_name5:mail4@mail.com:address4
first_name5:last_name6:mail5@mail.com:address5
first_name6:last_name7:mail6@mail.com:address6
first_name7:last_name8:mail7@mail.com: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
...
请帮忙
使用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)
data = file_to_open.readlines()
for line in data:
print(line.split(':')[-1])
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
您可以尝试在 data
的每一行上使用 split
方法
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()
我可以帮你。
我的 datas.txt
文件:
first_name1:last_name1:mail1@mail.com:address1
first_name2:last_name2:mail2@mail.com:address2
first_name3:last_name3:mail3@mail.com:address3
first_name4:last_name5:mail4@mail.com:address4
first_name5:last_name6:mail5@mail.com:address5
first_name6:last_name7:mail6@mail.com:address6
first_name7:last_name8:mail7@mail.com: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
希望能帮到你
我有一个名为 data.txt 的文件,其中包含用冒号分隔的姓名、邮件和地址。它看起来像这样:
first_name1:last_name1:mail1@mail.com:address1
first_name2:last_name2:mail2@mail.com:address2
first_name3:last_name3:mail3@mail.com:address3
first_name4:last_name5:mail4@mail.com:address4
first_name5:last_name6:mail5@mail.com:address5
first_name6:last_name7:mail6@mail.com:address6
first_name7:last_name8:mail7@mail.com: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
...
请帮忙
使用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)
data = file_to_open.readlines()
for line in data:
print(line.split(':')[-1])
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
您可以尝试在 data
split
方法
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()
我可以帮你。
我的 datas.txt
文件:
first_name1:last_name1:mail1@mail.com:address1
first_name2:last_name2:mail2@mail.com:address2
first_name3:last_name3:mail3@mail.com:address3
first_name4:last_name5:mail4@mail.com:address4
first_name5:last_name6:mail5@mail.com:address5
first_name6:last_name7:mail6@mail.com:address6
first_name7:last_name8:mail7@mail.com: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
希望能帮到你