简体   繁体   中英

Read CSV file line-by-line python

I have a .csv file I am trying to read, but I'm having trouble. Please forgive me as this is a very remedial question:

I'm trying to read a file line-by-line with the following:

with open('Book8.csv') as fp:
for line in fp:
    print line

If I do this I print the whole file. like so:

1,2,3

4,5,6

7,8,9

However I only want to print the middle line so I put

 with open('Book8.csv') as fp:
for line in fp:
    print line[1]

This gives me

, , as my output.

I want the output to be 4,5,6. It seems the commas or the [1] character in each line is being treated as part of the line. I'm not sure how to fix this.

Eventually I'm going to want to do a regular expression on each of these lines to search for multiple substrings in each line.

For example:

Line 1: There is text I want in here that text is _:E28, _:K31 blah blah

Line 2: There is text I want in here that text is _:H27, _:K12 blah blah

Will it be possible to write a regex to create a list for each line containing only my text of interest?

For example: List 1=[" :E28", " :K31"] List 2=["_:H27", "_K12"]

Store your lines in a list and print from there. readlines() returns a list of every line in your file for you.

with open('Book8.csv') as fp:
    line = fp.readlines()

print(line[1])

You are iterating over the string at position 1 which is just ,

import csv
with open ('Book8.csv','r') as csv_file:
    reader =csv.reader(csv_file)
    next(reader) # skip first row
    for row in reader:
        print(row)

As mentioned that you only want the middle row to get printed so you can use a simple row counter to actually count the rows and to only print the middle row

row_count = 0
with open('Book8.csv') as fp:
for line in fp:
    if row_count == 1:
        print line
    row_count+=1

If there is a case where there are multiple rows and you want all the middle rows to be printed except for the first and last one you can modify the code further

row_count = 0
with open('Book8.csv') as fp:
for line in fp:
    if row_count!=0 and row_count!=total_number_of_lines-1:
        print line
    row_count+=1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM