我看过一些关于 numpy 模块等的相关帖子。我需要使用 csv 模块,它应该可以解决这个问题。虽然这里已经写了很多关于使用 csv 模块的文章,但我并没有完全找到我正在寻找的答案。非常感谢提前
基本上我有以下函数/伪代码(选项卡没有很好地复制......):
import csv
def copy(inname, outname):
infile = open(inname, "r")
outfile = open(outname, "w")
copying = False ##not copying yet
# if the first string up to the first whitespace in the "name" column of a row
# equals the first string up to the first whitespace in the "name" column of
# the row directly below it AND the value in the "ID" column of the first row
# does NOT equal the value in the "ID" column of the second row, copy these two
# rows in full to a new table.
例如,如果 inname 看起来像这样:
ID,NAME,YEAR, SPORTS_ALMANAC,NOTES
(前一千行)
1001,New York Mets,1900,ESPN
1002,New York Yankees,1920,Guiness
1003,Boston Red Sox,1918,ESPN
1004,Washington Nationals,2010
(直到最后一行的最后大量行)
1231231231235,Detroit Tigers,1990,ESPN
然后我希望我的输出看起来像:
ID,NAME,YEAR,SPORTS_ALMANAC,NOTES
1001,New York Mets,1900,ESPN
1002,New York Yankees,1920,Guiness
因为字符串“New”是相同的字符串,直到“Name”列中的第一个空格,并且 ID 不同。需要明确的是,我需要代码尽可能通用,因为“New”上的正则表达式不是我需要的,因为常见的第一个字符串实际上可以是任何字符串。在第一个空格之后发生什么并不重要(即“华盛顿国民队”和“华盛顿特区”应该仍然给我一个打击,就像上面纽约的例子一样......)
我很困惑,因为在 R 中有一种方法可以做到:inname$name 可以通过特定行中的值轻松搜索。我尝试先用 R 编写我的脚本,但它变得令人困惑。所以我想坚持使用Python。