我使用下面引用的代码使用Python编辑csv.代码中调用的函数形式代码的上半部分.
问题:我希望下面引用的代码从第2行开始编辑csv,我希望它排除包含标题的第1行.现在它只在第一行应用函数,我的标题行正在改变.
in_file = open("tmob_notcleaned.csv", "rb")
reader = csv.reader(in_file)
out_file = open("tmob_cleaned.csv", "wb")
writer = csv.writer(out_file)
row = 1
for row in reader:
row[13] = handle_color(row[10])[1].replace(" - ","").strip()
row[10] = handle_color(row[10])[0].replace("-","").replace("(","").replace(")","").strip()
row[14] = handle_gb(row[10])[1].replace("-","").replace(" ","").replace("GB","").strip()
row[10] = handle_gb(row[10])[0].strip()
row[9] = handle_oem(row[10])[1].replace("Blackberry","RIM").replace("TMobile","T-Mobile").strip()
row[15] = handle_addon(row[10])[1].strip()
row[10] = handle_addon(row[10])[0].replace(" by","").replace("FREE","").strip()
writer.writerow(row)
in_file.close()
out_file.close()
Run Code Online (Sandbox Code Playgroud)
我试图通过初始化row变量来解决这个问题,1但它没有用.
请帮我解决这个问题.
可能重复: 处理CSV数据时,如何忽略第一行数据?
我正在使用python打开CSV文件.我正在使用公式循环,但我需要跳过第一行,因为它有标题.
到目前为止,我记得是这样的,但它缺少一些东西:我想知道是否有人知道我想要做的代码.
for row in kidfile:
if row.firstline = false: # <====== Something is missing here.
continue
if ......
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用许多StackOverflow答案中建议的python的CSV嗅探器工具来猜测给定的CSV文件是否由;or 分隔,.
它与基本文件一起工作正常,但是当一个值包含一个分隔符时,它被双引号包围(标准为),并且嗅探器抛出_csv.Error: Could not determine delimiter.
以前有没有人经历过这个?
这是一个最小的失败的CSV文件:
column1,column2
0,"a, b"
Run Code Online (Sandbox Code Playgroud)
并且概念证明:
Python 3.5.1 (default, Dec 7 2015, 12:58:09)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> f = open("example.csv", "r")
>>> f.seek(0);
0
>>> csv.Sniffer().sniff(f.read(), delimiters=';,')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/csv.py", line 186, in sniff
raise Error("Could not determine delimiter")
_csv.Error: Could not …Run Code Online (Sandbox Code Playgroud) 如何在python中删除CSV文件的第一行,我的CSV文件的前几行是:
Domain Name, ItemID, Auction Type, Time Left, Price, Bids, Domain Age, Traffic,ValuationPrice
TICKETFINE.COM,134774365,Bid,05/09/2014 08:00 AM (PDT),$100,0,0,0,$0
CREATINGMY.COM,134774390,Bid,05/09/2014 08:00 AM (PDT),$500,0,0,0,$0
WPTHEMEHELP.COM,134774444,Bid,05/09/2014 08:00 AM (PDT),$45,1,0,0,$0
APK-ZIPPY.COM,134774445,Bid,05/09/2014 08:00 AM (PDT),$10,0,0,0,$0
FAMILYBUZZMARKETING.COM,134689583,Bid,05/09/2014 08:00 AM (PDT),$90,0,0,0,$0
AMISRAGAS.COM,134689584,Bid,05/09/2014 08:00 AM (PDT),$35,0,0,0,$0
Run Code Online (Sandbox Code Playgroud) 我在大型(7000行)csv文件上尝试了此建议的解决方案): 从第2行读取文件或跳过标题行`
以下代码有效,但前提是我必须手动删除标头:
RatedTracksFile = open('pyall_rated.csv')
RatedTracksReader = csv.reader(RatedTracksFile)
data_list = list(csv.reader(RatedTracksFile))
eligible1 = open('py_all1.csv', 'a') # open py_all1.csv in append mode
for i in range(len(data_list)):
trackrating = int(data_list[i][12])
...
Run Code Online (Sandbox Code Playgroud)
我尝试了添加此建议代码的不同方法:
with open(fname) as f:
next(f)
for line in f:
Run Code Online (Sandbox Code Playgroud)
我是python的新手,无法弄清楚如何添加它。我一直遇到相同的值类型错误,因为它仍然读取第1行,col 12(这是标题的字符串),而不是第2行的整数。第12栏:
ValueError: invalid literal for int() with base 10: 'GroupDesc'
Run Code Online (Sandbox Code Playgroud)
已解决:基于下面的Sphinx的评论(谢谢!)。
我有两列的csv文件。我试图将第二个列从该csv文件读取到python中的列表。我提到了stackoverflow中的一些方法。我尝试了它们,但出现错误。
noise_amp=[] #an empty list to store the second column
with open('null_ch1_waveform_10mV.csv', 'rb') as rf:
reader = csv.reader(rf, delimiter=';')
for row in reader:
noise_amp.extend([row[1]])
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
noise_amp=[] #an empty list to store the second column
with open('null_ch1_waveform_10mV.csv', 'rb') as rf:
reader = csv.reader(rf, delimiter=';')
for row in reader:
noise_amp.extend([row[1]])
Run Code Online (Sandbox Code Playgroud)
我的csv文件就像
1,2
2,3
3,4
4,5
Run Code Online (Sandbox Code Playgroud) 读取 csv 文件时,有时第一行(或多行)是我们不想包含在数据中的标题。
如果我不需要next在声明阅读器之前使用的标题中的数据(如果标题使用多于一行,我可以多次调用 next):
with open('myfile.csv', 'rb') as f:
next(f) #skip first row
reader = csv.reader(f)
for row in reader:
#process my data
Run Code Online (Sandbox Code Playgroud)
然而有时我不想在我的数据中包含标题但仍然需要它们的值。在这种情况下,我将其csv.reader转换为列表并单独处理标题。
with open('myfile.csv', 'rb') as f:
reader = list(csv.reader(f))
my_header = reader.pop(0) #remove header
for row in reader:
#process my data
Run Code Online (Sandbox Code Playgroud)
这很有效,我很高兴。但我不确定这是否是“最佳实践”的使用方式,csv.reader还有其他值得探索的方式。