แยกคอลัมน์ออกจากไฟล์ .csv ตามชื่อ

ฉันมีไฟล์ .csv เช่นนี้:

  Name                    |    Twitter handle
  3 Degrees Incorporation |    3Degrees_Inc

แถวแรกคือชื่อคอลัมน์ และแถวที่สองคือเนื้อหาของแต่ละคอลัมน์ในทั้งสองคอลัมน์

หากฉันต้องการแยกข้อมูลที่อยู่ในคอลัมน์ "Twitter handle" รหัสหลามที่ถูกต้องที่จะใช้คืออะไร

ขอบคุณ


person Jin-Dominique    schedule 22.10.2013    source แหล่งที่มา
comment
ดู stackoverflow.com/questions/3222831/   -  person megawac    schedule 22.10.2013
comment
เป็นที่น่าสังเกตว่านี่ไม่ใช่รูปแบบ CSV ที่ถูกต้องจริงๆ (หรือหากคุณตีความว่าเป็น CSV ตาม RFC 4180 หรือภาษาถิ่นที่สมเหตุสมผล ค่าส่วนใหญ่ของคุณจะมีช่องว่างเพิ่มเติมก่อนและหลังสิ่งเหล่านั้น)   -  person abarnert    schedule 22.10.2013


คำตอบ (1)


with open(csvfile) as f:
    for row in csv.DictReader(f, delimiter='|', skipinitialspace=True):
        do_something_with(row['Twitter handle']

ดูเอกสารสำหรับข้อมูลเพิ่มเติม... แต่ยังไม่มีอะไรมากไปกว่านั้น ไปมากกว่านี้

แต่จริงๆ แล้ว นี่ไม่ใช่ CSV ที่เหมาะสม และคุณเพิ่งโชคดีที่คุณขอคอลัมน์สุดท้าย เนื่องจากคอลัมน์อื่นๆ ทั้งหมดมีช่องว่างเทอร์มินัลและช่องว่างเริ่มต้น และไม่มีทางที่จะข้ามสิ่งนั้นไปได้ ดังนั้น หากคุณต้องการจัดการคอลัมน์อื่น คุณจะต้องมีสิ่งต่อไปนี้:

with open(csvfile) as f:
    headers = next(csv.reader(f, delimiter='|', skipinitialspace=True))
    headers = [header.strip() for header in headers]
    for row in csv.DictReader(f, fieldnames=headers, 
                              delimiter='|', skipinitialspace=True):
        do_something_with(row[colname].strip())
person abarnert    schedule 22.10.2013
comment
ขอบคุณสำหรับการตอบกลับของคุณ. เป็นเพียงว่าฉันได้รับข้อผิดพลาดทางไวยากรณ์อย่างต่อเนื่องที่คำสั่ง ` headers = [header.strip() for header in headers]...python doesn't seem to recognize the headers`.....ฉันจะแก้ไขได้อย่างไร - person Jin-Dominique; 22.10.2013
comment
นั่นเกือบทุกครั้งหมายความว่าคุณไม่มีวงเล็บปิด / วงเล็บเหลี่ยม / เครื่องหมายคำพูด / ฯลฯ ในบรรทัดก่อนหน้า ฉันไม่สามารถดีบั๊กได้ดีไปกว่านี้หากไม่มีโค้ดและการติดตามย้อนกลับจริงของคุณ - person abarnert; 22.10.2013