【发布时间】:2020-07-30 09:26:39
【问题描述】:
我需要读取一个 csv 文件并根据此人的地址填写“电话和电子邮件”列中的空/空值,然后写入一个新的 csv 文件。例如:如果“Jonas Kahnwald”没有电话号码或电子邮件地址,但与上面或下面的人的地址相同,请说“Hannah Kahnwald ",那么我们应该用这些人的详细信息填充空/空值。
我将无法使用 python pandas,因为其余的代码/程序完全基于 python 2.7(不幸的是),所以我只需要编写一个函数或逻辑来单独捕获这些信息。
输入格式/表格如下所示,带有空单元格(csv 文件):
FirstName,LastName,Phone,Email,Address
Hannah,Kahnwald,1457871452,hannkahn@gmail.com,145han street
Micheal,Kahnwald,6231897383,,145han street
Jonas,Kahnwald,,,145han street
Mikkel,Nielsen,4509213887,mikneil@yahoo.com,887neil ave
Magnus,Nielsen,,magnusneil@kyle.co,887neil ave
Ulrich,Nielsen,,,887neil ave
katharina,Nielsen,,,887neil ave
Elisabeth,Doppler,5439001211,elsisop@amaz.com,211elis park
Peter,Doppler,,,211elis park
bartosz,Tiedmannn,6263172828,tiedman@skype.com,828alex street
Alexander,washington,,,321notsame street
claudia,Tiedamann,,,828alex street
输出格式如下:
Hannah,Kahnwald,1457871452,hannkahn@gmail.com,145han street
Micheal,Kahnwald,6231897383,hannkahn@gmail.com,145han street
Jonas,Kahnwald,1457871452,hannkahn@gmail.com,145han street
Mikkel,Nielsen,4509213887,mikneil@yahoo.com,887neil ave
Magnus,Nielsen,4509213887,magnusneil@kyle.co,887neil ave
Ulrich,Nielsen,4509213887,mikneil@yahoo.com,887neil ave
katharina,Nielsen,4509213887,mikneil@yahoo.com,887neil ave
Elisabeth,Doppler,5439001211,elsisop@amaz.com,211elis park
Peter,Doppler,5439001212,elsisop@amaz.com,211elis park
bartosz,Tiedmannn,6263172828,tiedman@skype.com,828alex street
Alexander,washington,,,321notsame street
claudia,Tiedamann,6263172828,tiedman@skype.com,828alex street
import csv,os
def get_info(file path):
data = []
with open(file, 'rb') as fin:
csv_reader = csv.reader(fin)
next(reader)
for each in csv_reader:
FirstName = each[0]
LN = each[1]
Phone = "some function or logic"
email = " some function or logic"
Address = each[4]
login = ""
logout = ""
data.append([FirstName,LN,Phone,email,Address,login,logout])
f.close()
return data
【问题讨论】:
-
您并没有真正展示 csv 文件的实际内容,但您的问题似乎与 csv reader behavior with None and empty string 密切相关。
-
将“none”替换为空字符串,例如“”或“”(在“和”之间或“和”之间没有任何内容)
-
@martineau 感谢您的编辑。这是我的第二篇文章,我是 python 和 stackoverflow 的初学者,所以我很难以正确的方式定位。我的 CSV 文件的实际内容(以逗号分隔)看起来完全一样。虽然它包含超过 5 列,但上述列是我需要通过用我在正文中提到的逻辑填充 none/null/empty 值来提取的列。我在读取或写入 csv 文件时没有问题。我不能使用 pandas(ffill,bfill) 或 excel。我希望我清楚并回答了您的问题。
-
Roy:不客气——编辑没什么大不了的。请注意,在您的问题中包含样本数据的另一个原因是,如果其他人想要测试他们对您问题的回答,他们不必自己创建自己的样本。由于 csv 文件是文本,所以它应该只是一个剪切和粘贴操作。
-
@martineau 哦,我现在明白了,你的意思是我可以附加我实际工作的 CSV 文件吗?我不知道那个选项是否存在。如果它在那里,我肯定会附上它。
标签: python python-2.7 csv parsing