39
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi cần phải sọc các khoảng trắng từ tệp CSV mà tôi đã đọc
import csv
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
# I need to strip the extra white space from each string in the row
return[aList]
Nuno André
Phù hiệu vàng 3.9401 Huy hiệu bạc40 Huy hiệu đồng1 gold badge29 silver badges40 bronze badges
hỏi ngày 14 tháng 2 năm 2013 lúc 23:24Feb 14, 2013 at 23:24
Ngoài ra còn có tham số định dạng nhúng: Skipinitialspace [mặc định là sai] //docs.python.org/2/l Library/csv.html#csv-fmt-pams
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
Óscar López
228K35 Huy hiệu vàng305 Huy hiệu bạc378 Huy hiệu đồng35 gold badges305 silver badges378 bronze badges
Đã trả lời ngày 14 tháng 6 năm 2013 lúc 21:34Jun 14, 2013 at 21:34
CarawcarawCaraW
4415 Huy hiệu bạc3 Huy hiệu đồng5 silver badges3 bronze badges
2
Trong trường hợp của tôi, tôi chỉ quan tâm đến việc tước khoảng trắng từ các tên trường [hay còn gọi là tiêu đề cột, AKA từ điển], khi sử dụng
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
5.field
names [aka column headers, aka dictionary keys], when using aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
5.Tạo một lớp dựa trên
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
5 và ghi đè thuộc tính aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
7 để loại bỏ khoảng trắng từ mỗi tên trường [AKA tiêu đề cột, phím từ điển hay còn gọi là khóa từ điển].Thực hiện điều này bằng cách lấy danh sách các tên trường thường xuyên và sau đó lặp lại nó trong khi tạo một danh sách mới với khoảng trắng bị tước từ mỗi tên trường và đặt thuộc tính
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
8 bên dưới cho danh sách mới này.import csv
class DictReaderStrip[csv.DictReader]:
@property
def fieldnames[self]:
if self._fieldnames is None:
# Initialize self._fieldnames
# Note: DictReader is an old-style class, so can't use super[]
csv.DictReader.fieldnames.fget[self]
if self._fieldnames is not None:
self._fieldnames = [name.strip[] for name in self._fieldnames]
return self._fieldnames
Đã trả lời ngày 9 tháng 9 năm 2015 lúc 18:08Sep 9, 2015 at 18:08
CivilfancivfanCivFan
12.4K9 Huy hiệu vàng39 Huy hiệu bạc57 Huy hiệu Đồng9 gold badges39 silver badges57 bronze badges
1
with open[self.filename, 'r'] as f:
reader = csv.reader[f, delimiter=',', quoting=csv.QUOTE_NONE]
return [[x.strip[] for x in row] for row in reader]
Đã trả lời ngày 14 tháng 2 năm 2013 lúc 23:27Feb 14, 2013 at 23:27
Mgilsonmgilsonmgilson
289K60 Huy hiệu vàng607 Huy hiệu bạc676 Huy hiệu Đồng60 gold badges607 silver badges676 bronze badges
2
Bạn có thể làm:
aList.append[[element.strip[] for element in row]]
Đã trả lời ngày 14 tháng 2 năm 2013 lúc 23:26Feb 14, 2013 at 23:26
Sapisapisapi
9.7728 Huy hiệu vàng39 Huy hiệu bạc71 Huy hiệu đồng8 gold badges39 silver badges71 bronze badges
Phương pháp tiết kiệm bộ nhớ nhất để định dạng các ô sau khi phân tích cú pháp là thông qua các trình tạo. Cái gì đó như:
with open[self.filename, 'r'] as f:
reader = csv.reader[f, delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
yield [cell.strip[] for cell in row]
Nhưng nó có thể đáng để chuyển nó sang một chức năng mà bạn có thể sử dụng để tiếp tục và để tránh các lần lặp lại sắp tới. Ví dụ:
nulls = {'NULL', 'null', 'None', ''}
def clean[reader]:
def clean[row]:
for cell in row:
cell = cell.strip[]
yield None if cell in nulls else cell
for row in reader:
yield clean[row]
Hoặc nó có thể được sử dụng để nhân tố một lớp:
def factory[reader]:
fields = next[reader]
def clean[row]:
for cell in row:
cell = cell.strip[]
yield None if cell in nulls else cell
for row in reader:
yield dict[zip[fields, clean[row]]]
Đã trả lời ngày 4 tháng 8 năm 2018 lúc 17:29Aug 4, 2018 at 17:29
Nuno Andrénuno AndréNuno André
Phù hiệu vàng 3.9401 Huy hiệu bạc40 Huy hiệu đồng1 gold badge29 silver badges40 bronze badges
hỏi ngày 14 tháng 2 năm 2013 lúc 23:24
import re
class CSVSpaceStripper:
def __init__[self, filename]:
self.fh = open[filename, "r"]
self.surroundingWhiteSpace = re.compile["\s*;\s*"]
self.leadingOrTrailingWhiteSpace = re.compile["^\s*|\s*$"]
def close[self]:
self.fh.close[]
self.fh = None
def __iter__[self]:
return self
def next[self]:
line = self.fh.next[]
line = self.surroundingWhiteSpace.sub[";", line]
line = self.leadingOrTrailingWhiteSpace.sub["", line]
return line
Ngoài ra còn có tham số định dạng nhúng: Skipinitialspace [mặc định là sai] //docs.python.org/2/l Library/csv.html#csv-fmt-pams
o = csv.reader[CSVSpaceStripper[filename], delimiter=";"]
o = csv.DictReader[CSVSpaceStripper[filename], delimiter=";"]
Óscar López
228K35 Huy hiệu vàng305 Huy hiệu bạc378 Huy hiệu đồngMay 30, 2014 at 14:41
Đã trả lời ngày 14 tháng 6 năm 2013 lúc 21:34daniel kullmann
Carawcaraw6 gold badges51 silver badges65 bronze badges
1
4415 Huy hiệu bạc3 Huy hiệu đồng
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
0Trong trường hợp của tôi, tôi chỉ quan tâm đến việc tước khoảng trắng từ các tên trường [hay còn gọi là tiêu đề cột, AKA từ điển], khi sử dụng
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
5.aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
1Tạo một lớp dựa trên
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
5 và ghi đè thuộc tính aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
7 để loại bỏ khoảng trắng từ mỗi tên trường [AKA tiêu đề cột, phím từ điển hay còn gọi là khóa từ điển].May 2, 2018 at 10:49
Thực hiện điều này bằng cách lấy danh sách các tên trường thường xuyên và sau đó lặp lại nó trong khi tạo một danh sách mới với khoảng trắng bị tước từ mỗi tên trường và đặt thuộc tính
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
8 bên dưới cho danh sách mới này.aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
2Đã trả lời ngày 9 tháng 9 năm 2015 lúc 18:08Feb 22, 2021 at 10:37
Luke404Luke404Luke404
Civilfancivfan3 gold badges24 silver badges31 bronze badges
12.4K9 Huy hiệu vàng39 Huy hiệu bạc57 Huy hiệu Đồng
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
3Đã trả lời ngày 14 tháng 2 năm 2013 lúc 23:27Jul 26, 2021 at 15:25
Mgilsonmgilson
aList=[]
with open[self.filename, 'r'] as f:
reader = csv.reader[f, skipinitialspace=False,delimiter=',', quoting=csv.QUOTE_NONE]
for row in reader:
aList.append[row]
return[aList]
4289K60 Huy hiệu vàng607 Huy hiệu bạc676 Huy hiệu ĐồngAug 8 at 13:02