我有一个要读取的.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等等
第2行:我想在此处输入文字为_:H27,_:K12等等
是否可以编写一个正则表达式来为仅包含我感兴趣的文本的每一行创建一个列表?
例如:列表1 = [“ :E28”,“ :K31”] 清单2 = [“ _:H27”,“ _K12”]
答案 0 :(得分:3)
将行存储在列表中并从那里打印。 readlines()
为您返回文件中每一行的列表。
with open('Book8.csv') as fp:
line = fp.readlines()
print(line[1])
答案 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)
答案 2 :(得分:0)
如前所述,您只希望打印中间行,因此您可以使用简单的行计数器来实际计数行并仅打印中间行
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