逐行读取 CSV 文件 python
Posted
技术标签:
【中文标题】逐行读取 CSV 文件 python【英文标题】:Read CSV file line-by-line python 【发布时间】:2018-10-22 21:15:41 【问题描述】:我有一个 .csv 文件正在尝试读取,但我遇到了问题。请原谅我,因为这是一个非常有帮助的问题:
我正在尝试使用以下内容逐行读取文件:
with open('Book8.csv') as fp:
for line in fp:
print line
如果我这样做,我会打印整个文件。像这样:
1,2,3
4,5,6
7,8,9
但是我只想打印中间线所以我放了
with open('Book8.csv') as fp:
for line in fp:
print line[1]
这给了我
� , , 作为我的输出。
我希望输出为 4、5、6。似乎每行中的逗号或 [1] 字符都被视为该行的一部分。我不知道如何解决这个问题。
最终我会想在每一行上做一个正则表达式来搜索每行中的多个子字符串。
例如:
第 1 行:这里有我想要的文本,文本是 _:E28, _:K31 blah blah
第 2 行:这里有我想要的文本,文本是 _:H27, _:K12 blah blah
是否可以编写一个正则表达式来为每一行创建一个列表,其中只包含我感兴趣的文本?
例如:列表 1=[":E28", ":K31"] 列表 2=["_:H27", "_K12"]
【问题讨论】:
docs.python.org/2/library/csv.html#csv.reader 【参考方案1】:将您的行存储在列表中并从那里打印。 readlines()
为您返回文件中每一行的列表。
with open('Book8.csv') as fp:
line = fp.readlines()
print(line[1])
【讨论】:
【参考方案2】:您正在遍历位置 1 的字符串,即 ,
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)
【讨论】:
好的,这样给出 :['4', '5', '6'] ['7', '8', '9'] 。如果我只想打印 [7,8,9] 怎么办?没有下一个我怎么得到它? 等我回答了我自己的问题:如果 '7' in row: print row 非常感谢!【参考方案3】:如前所述,您只希望打印中间行,因此您可以使用简单的行计数器来实际计算行数并仅打印中间行
row_count = 0
with open('Book8.csv') as fp:
for line in fp:
if row_count == 1:
print line
row_count+=1
如果存在多行的情况,并且您希望打印除第一行和最后一行之外的所有中间行,您可以进一步修改代码
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
【讨论】:
以上是关于逐行读取 CSV 文件 python的主要内容,如果未能解决你的问题,请参考以下文章