Các tệp được phân định bằng tab là các tệp văn bản được sắp xếp xung quanh dữ liệu có hàng và cột. Định dạng này được sử dụng để trao đổi dữ liệu giữa các chương trình bảng tính hoặc cơ sở dữ liệu. Tệp được phân định bằng tab chỉ sử dụng hai quy tắc chấm câu để mã hóa dữ liệu
Mỗi hàng được phân định bởi một ký tự xuống dòng thông thường. Đây thường là tiêu chuẩn
\n
. Nếu bạn đang trao đổi tệp trên các nền tảng, bạn có thể cần mở tệp để đọc bằng chế độ "rU" để xử lý dòng mới chungTrong một hàng, các cột được phân cách bằng một ký tự đơn, thường là
\t
. Ký tự dấu câu cột được chọn là ký tự sẽ không bao giờ xuất hiện trong dữ liệu. Nó thường [nhưng không phải luôn luôn] là một ký tự không in được như\t
Trong các trường hợp lý tưởng, tệp CSV sẽ có cùng số cột trong mỗi hàng và hàng đầu tiên sẽ là tiêu đề cột. Gần như thú vị là một tệp không có tiêu đề cột, nhưng với một chuỗi các cột đã biết. Trong các trường hợp phức tạp hơn, số lượng cột trên mỗi hàng thay đổi
Khi chúng ta có một dấu chấm câu tiêu chuẩn, đơn giản, chúng ta có thể chỉ cần sử dụng hai thao tác trong các lớp string
và list
để xử lý tệp. Chúng tôi sử dụng phương pháp split
của một string
để phân tích các hàng. Chúng tôi sử dụng phương pháp join
của một list
để tập hợp các hàng
Chúng tôi thực sự không cần một mô-đun riêng biệt để xử lý các tệp được phân định bằng tab. Chúng tôi đã xem xét một ví dụ liên quan trong
Đọc. Trường hợp chung nhất để đọc dữ liệu được phân định bằng tab được hiển thị trong ví dụ sau
myFile= open[ "
somefile
", "rU" ]
for aRow in myFile:
print aRow.split['\t']
myFile.close[]
Mỗi hàng sẽ là một list
giá trị cột
Viết. Trường hợp viết là nghịch đảo của trường hợp đọc. Về cơ bản, chúng tôi sử dụng
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]2 để tạo hàng được phân định bằng tab. Đây là ví dụ về thuyền buồm của chúng tôi, được thực hiện dưới dạng dữ liệu được phân định bằng tab
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]
Lưu ý rằng một số thành phần của đối tượng dữ liệu của chúng tôi không phải là giá trị chuỗi. Trong trường hợp này, giá trị của sails là một bộ, cần được chuyển đổi thành một chuỗi thích hợp. Biểu thức
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]3 ] áp dụng hàm
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]4 cho từng phần tử của danh sách ban đầu, tạo danh sách mới sẽ có tất cả các giá trị chuỗi. Xem phần có tên là “Các hàm xử lý trình tự.
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]5,
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]6,
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]7 và
test= file[ "boats.tab", "w" ] test.write[ "\t".join[ Boat.csvHeading ] ] test.write[ "\n" ] for d in db: test.write[ "\t".join[ map[ str, d.csvRow[] ] ] ] test.write[ "\n" ] test.close[]8”
Cách dễ nhất để chuyển đổi tệp giá trị được phân định bằng tab [TSV] thành tệp giá trị được phân tách bằng dấu phẩy [CSV] là sử dụng ba dòng mã sau
import pandas as pd
df = pd.read_csv['my_file.txt', sep='\t', header=None]
df.to_csv['my_file.csv', header=None]
Tiếp theo, chúng tôi sẽ giải thích chi tiết hơn về phương pháp này và các phương pháp khác—hãy cuộn xuống Phương pháp 3 để biết phương pháp chính xác này
Xây dựng vấn đề
Đưa ra một tệp được phân định bằng tab có một ký tự tab '\t'
giữa hai giá trị trong một cột nhất định
Đầu vào. 'my_file.tsv'
'my_file.tsv'
với các giá trị được phân tách bằng tab '\t'
Alice DataScience $100000 Bob Programmer $90000 Carl Manager $122000 Dave Freelancer $144000
Làm cách nào để chuyển đổi các giá trị được phân định bằng tab [TSV] thành tệp giá trị được phân tách bằng dấu phẩy [CSV]?
đầu ra.
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
20,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
Chúng tôi cũng sẽ xem xét các biến thể nhỏ của vấn đề này. Đi nào
Phương pháp 1. Chuỗi thay thế một tab
Cách đơn giản nhất để chuyển đổi tệp được phân định bằng tab [TSV] thành tệp được phân tách bằng dấu phẩy [CSV] trong Python là thay thế từng ký tự dạng bảng '\t'
bằng ký tự dấu phẩy
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
4 bằng phương pháp 0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
5. Điều này hoạt động nếu hai giá trị được phân tách bằng chính xác một ký tự dạng bảngĐây là một tệp đầu vào ví dụ 'my_file.tsv'
Dưới đây là ví dụ về một số mã để chuyển đổi tệp được phân định bằng tab thành tệp CSV
with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
Tệp đầu ra
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
2Nếu bạn có bất kỳ nghi ngờ nào, vui lòng đi sâu vào các hướng dẫn liên quan của chúng tôi
- Phương thức thay thế chuỗi Python
- Hàm
8 của Python0,Alice,DataScience,$100000 1,Bob,Programmer,$90000 2,Carl,Manager,$122000 3,Dave,Freelancer,$144000
- Python
9 vào tệp0,Alice,DataScience,$100000 1,Bob,Programmer,$90000 2,Carl,Manager,$122000 3,Dave,Freelancer,$144000
- Hàm
9 của Python0,Alice,DataScience,$100000 1,Bob,Programmer,$90000 2,Carl,Manager,$122000 3,Dave,Freelancer,$144000
- Trình quản lý bối cảnh Python
Phương pháp 2. Regex Thay thế các tab tùy ý
Để thay thế một '\t'
hoặc nhiều tab
with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]2 giữa hai giá trị cột bằng dấu phẩy
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
4 và lấy CSV, hãy sử dụng thao tác biểu thức chính quy with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]4 trên khoảng cách được phân tách bằng dấu cách
with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]5
Nếu bạn có bất kỳ nghi ngờ nào, vui lòng đi sâu vào các hướng dẫn liên quan của chúng tôi
- Python Regex
with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
6 - Python Regex
with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
7 Lớp ký tự - Python Regex
with open['my_file.tsv'] as f: # Read space-delimited file and replace all empty spaces by commas data = f.read[].replace['\t', ','] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
8 Bộ định lượng - Siêu năng lực Regex của Python
Đây là một ví dụ về tệp đầu vào 'my_file.tsv'
, lưu ý các ký tự dạng bảng bổ sung có thể phân tách hai giá trị cột
Dưới đây là ví dụ về một số mã để chuyển đổi TSV sang tệp CSV
import re with open['my_file.txt'] as infile: # Read space-delimited file and replace all empty spaces by commas data = re.sub['[ ]+', ',', infile.read[]] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
Tệp đầu ra
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
2Phương pháp 3. Pandas read_csv[] và to_csv[]
Để chuyển đổi tệp được phân định bằng tab thành CSV, trước tiên hãy đọc tệp đó vào Khung dữ liệu Pandas bằng cách sử dụng
import re with open['my_file.txt'] as infile: # Read space-delimited file and replace all empty spaces by commas data = re.sub['[ ]+', ',', infile.read[]] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]1, sau đó ghi Khung dữ liệu vào tệp bằng cách sử dụng
import re with open['my_file.txt'] as infile: # Read space-delimited file and replace all empty spaces by commas data = re.sub['[ ]+', ',', infile.read[]] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]2
Đây là một tệp đầu vào ví dụ 'my_file.tsv'
Dưới đây là ví dụ về một số mã để chuyển đổi tệp được phân định bằng tab thành tệp CSV
import pandas as pd # Read space-delimited file df = pd.read_csv['my_file.tsv', sep='\t+', header=None] # Write DataFrame to file df.to_csv['my_file.csv', header=None]
Tệp đầu ra
0,Alice,DataScience,$100000
1,Bob,Programmer,$90000
2,Carl,Manager,$122000
3,Dave,Freelancer,$144000
2Bạn cũng có thể sử dụng
import re with open['my_file.txt'] as infile: # Read space-delimited file and replace all empty spaces by commas data = re.sub['[ ]+', ',', infile.read[]] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]5 đơn giản hơn nếu bạn chắc chắn rằng chỉ một ký tự dạng bảng duy nhất phân tách hai giá trị cột
Nếu bạn có bất kỳ nghi ngờ nào, vui lòng đi sâu vào các hướng dẫn liên quan của chúng tôi
- Gấu trúc
import re with open['my_file.txt'] as infile: # Read space-delimited file and replace all empty spaces by commas data = re.sub['[ ]+', ',', infile.read[]] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
6 - Gấu trúc
import re with open['my_file.txt'] as infile: # Read space-delimited file and replace all empty spaces by commas data = re.sub['[ ]+', ',', infile.read[]] # Write the CSV data in the output file print[data, file=open['my_file.csv', 'w']]
7
Tóm lược
Chúng tôi đã kiểm tra ba cách tuyệt vời để chuyển đổi tệp CSV được phân cách bằng dấu cách thành tệp CSV được phân tách bằng dấu phẩy
Cảm ơn đã dành thời gian để đọc bài viết này, bạn của tôi. 🐍💛
Regex hài hước
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây