Ваше понимание немного неверно, следующий запрос:
var query = from p in new Class1<Product>()
where p.Id == "1000"
select p
переведет на:
var query = new Class1<Product>().Where(p => p.Id == "1000");
и когда вы удалите часть where
:
var query = from p in new Class1<Product>()
select p;
теперь он будет переведен на что-то вроде:
var query = new Class1<Product>().Select(p=>p);
Игнорировать последний элемент в каждой строке:
with open(waveform, 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row[:-1]
или преобразовать каждую строку в dict:
columns = ['value']
with open(waveform, 'rb') as f:
reader = csv.reader(f)
for row in reader:
rec = dict(zip(columns, row))
print rec
печатает
{'value': '-1'}
{'value': '-1'}
{'value': '1'}
{'value': '1'}
Я бы пошел с ответом @ eumiro.
В csv.reader
есть опция lineterminator=
, но, по-видимому, это игнорируется в данный момент ..., так что это не-go.
Если вы должны были csv.reader
не видеть разделитель конечного поля, тогда напишите фильтр:
def remove_last_char(fileobj):
for line in fileobj:
yield line.strip()[:-1]
with open(waveform, 'rb') as f:
reader = csv.reader( remove_last_char(f) )
for row in reader:
print row[:-1]
csv.reader
выполняет линию после строки независимо и возвращает все элементы в строке независимо от их количества. Поэтому вам приходится работать с каждой строкой самостоятельно. – eumiro 16 July 2012 в 12:53