python CSV-файл, добавляющий дополнительный пустой столбец [дубликат]

Ваше понимание немного неверно, следующий запрос:

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);
1
задан veor 16 July 2012 в 12:48
поделиться

2 ответа

Игнорировать последний элемент в каждой строке:

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'}
5
ответ дан eumiro 21 August 2018 в 22:35
поделиться
  • 1
    Да, это решает проблему. Однако мне хотелось бы что-то, что устраняет проблему с самого начала при чтении CSV-файла, если это возможно. – veor 16 July 2012 в 12:51
  • 2
    @ user1498553 - csv.reader выполняет линию после строки независимо и возвращает все элементы в строке независимо от их количества. Поэтому вам приходится работать с каждой строкой самостоятельно. – eumiro 16 July 2012 в 12:53

Я бы пошел с ответом @ 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]
2
ответ дан Jon Clements 21 August 2018 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: