看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
WI数据小文件分析 LinqPad+C#,任意行打印输出
查看未名空间今日新帖
最新回复:2020年11月12日 15点8分 PT
共 (15) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
b
bigCat2012
大约 4 年
楼主 (未名空间)
感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
https://gofile.io/d/XwcWGo
第二步下载LinqPad
https://www.linqpad.net/Download.aspx
5,6都行,无所谓,我用的是version 5
把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”,press F5或者按Play Button运行就能输出;
注意几点:
1)把程序里面的 “C:\Data\WI\2152_5758.txt”,换成你自己local的文件Path,
2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump(); 里面的100就好,改成500,就会输出前500行数据,但是太多LinqPad会只输出前1000行
3)如果要取中间数据,比如从1500行-2000行,把.Take(100).Dump();换成.Skip(1500).Take(500).Dump(); 就好
剩下的我commont掉的是做更复杂的数据分析用的,比如说找出20个人注册同一地址等
等;这个如果是.net或者SQL熟手可以继续玩
void Main()
{
string file1 = @"C:\Data\WI\2152_5758.txt";
File.ReadLines(file1).Skip(1).Select(s => new VoterInfo(s)).Take(100).
Dump();
//.Where(s=>s.ElectionName.StartsWith("2020 General Election"))
//.Where(s => s.DateBallotReturned != null && s.DateBallotSent != null)
//.Where(s=>s.BallotDeliveryMethod == "Mail") // .Take(10).Dump();
//.GroupBy(s => s.BallotDeliveryMethod, s => s.VoterRegNumber).Select(s => $"{s.Key}, {s.Count()}").Dump();
//.Where(s=>s.VoterRegNumber == "701040741").Dump();
// .GroupBy(s=>s.VoterRegNumber, s=>s.VoterRegNumber).Where(s=>s.Count() > 1).Dump();
}
public class VoterInfo
{
public VoterInfo(string rawstring)
{
string[] items = rawstring.Split('\t');
this.VoterRegNumber = items[0];
this.LastName = items[1];
this.FirstName = items[2];
this.MiddleName = items[3];
this.Suffix = items[4];
this.VoterStatus = items[5];
this.VoterStatusReason = items[6];
this.VoterType = items[7];
this.Address1 = items[8];
this.Address2 = items[9];
this.HouseNumber = items[10];
this.StreetName = items[11];
this.UnitType = items[12];
this.UnitNumber = items[13];
this.ZipCode = items[14];
this.MailingAddress1 = items[15];
this.MailingAddress2 = items[16];
this.MailingCityStateZip = items[17];
this.PhoneNumber = items[18];
this.EmailAddress = items[19];
this.Jurisdiction = items[20];
this.County = items[21];
this.AbsApplicationDate = items[22];
this.ApplicationSource = items[23];
this.ApplicationType = items[24];
this.AbsenteeAddressName = items[25];
this.ElectionName = items[26];
this.BallotReasonType = items[27];
this.BallotType = items[28];
this.BallotStatus = items[29];
this.DistrictCombo = items[30];
this.WARDNAME = items[31];
this.BallotStatusReason = items[32];
this.BallotDeliveryMethod = items[33];
DateTime date;
if(DateTime.TryParse(items[34], out date))
DateBallotSent = date;
if (DateTime.TryParse(items[35], out date))
DateBallotReturned = date;
}
public string VoterRegNumber { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string Suffix { get; set; }
public string VoterStatus { get; set; }
public string VoterStatusReason { get; set; }
public string VoterType { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string HouseNumber { get; set; }
public string StreetName { get; set; }
public string UnitType { get; set; }
public string UnitNumber { get; set; }
public string ZipCode { get; set; }
public string MailingAddress1 { get; set; }
public string MailingAddress2 { get; set; }
public string MailingCityStateZip { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public string Jurisdiction { get; set; }
public string County { get; set; }
public string AbsApplicationDate { get; set; }
public string ApplicationSource { get; set; }
public string ApplicationType { get; set; }
public string AbsenteeAddressName { get; set; }
public string ElectionName { get; set; }
public string BallotReasonType { get; set; }
public string BallotType { get; set; }
public string BallotStatus { get; set; }
public string DistrictCombo { get; set; }
public string WARDNAME { get; set; }
public string BallotStatusReason { get; set; }
public string BallotDeliveryMethod { get; set; }
public DateTime? DateBallotSent { get; set; }
public DateTime? DateBallotReturned { get; set; }
}
F
FA8
大约 4 年
2 楼
👍,需要更多信息才能挖到舞弊证据。
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
w
wang9
大约 4 年
3 楼
这只是第一步,要找律师,才能把证据递上去。
要知道自己的目标,不能玩物丧志。
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
d
daemonself
大约 4 年
4 楼
为什么不召唤蟒蛇, 我今晚来写个parser
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
b
bigCat2012
大约 4 年
5 楼
这破网站,把\t给吃掉了
string[] items = rawstring.Split('t'); 里面的't'应该是'\t'
string[] items = rawstring.Split('\t');
d
daemonself
大约 4 年
6 楼
我联系呢,莫着急,你要不要把我举报给aoc?
【 在 wang9 (老王) 的大作中提到: 】
: 这只是第一步,要找律师,才能把证据递上去。
: 要知道自己的目标,不能玩物丧志。
: );
p
peacemind2
大约 4 年
7 楼
这王八就是一个说风凉话的,不用睬他。
【 在 daemonself (新晋川粉,前mit行为艺术专业博士后导师) 的大作中提到: 】
: 我联系呢,莫着急,你要不要把我举报给aoc?
l
lczlcz
大约 4 年
8 楼
很好, 支持一下楼主.
w
wocow
大约 4 年
9 楼
看来是真人啊,文科生吧,折腾这个,我见犹怜。我劝你别折腾了, move on 吧,谁
做总统,其实有啥差別,不高兴四年后把他选下来呗,想开点。
b
bigCat2012
大约 4 年
10 楼
【 在 wocow (wocow) 的大作中提到: 】
: 看来是真人啊,文科生吧,折腾这个,我见犹怜。我劝你别折腾了, move on 吧,谁
: 做总统,其实有啥差別,不高兴四年后把他选下来呗,想开点。
折腾啥,这玩意又不费时间,你以为我花了多长时间写着程序?最多10分钟多一点,
G
Gerdo
大约 4 年
11 楼
你们这是要干嘛?要分析什么?为什么要用这么原始的办法?
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
b
bigCat2012
大约 4 年
12 楼
【 在 Gerdo (Test) 的大作中提到: 】
: 你们这是要干嘛?要分析什么?为什么要用这么原始的办法?
: );
这不是原始,这是方便让普通人,甚至不懂电脑的人也能轻松看到数据;任何人如果按照我的方法+步骤,下载linqpad,10分钟就能看到数据,做他自己判断;
用你的“非原始”导入数据库的方法,那得计算机科班的人才能明白,ok?
b
bigCat2012
大约 4 年
13 楼
这个论坛有什么方法可以贴图吗?还是只能发文字信息?
g
gaodi
大约 4 年
14 楼
为什么有两个文件?分别是什么?
l
lczlcz
大约 4 年
15 楼
https://davidharrisjr.com/steven/have-faith-hundreds-pro-trump-it-volunteers-are-scouring-voter-data-already-nearly-300000-vote-discrepancies-were-
identified-in-pennsylvania-alone/
请输入帖子链接
收藏帖子
感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载https://gofile.io/d/XwcWGo
第二步下载LinqPad https://www.linqpad.net/Download.aspx
5,6都行,无所谓,我用的是version 5
把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”,press F5或者按Play Button运行就能输出;
注意几点:
1)把程序里面的 “C:\Data\WI\2152_5758.txt”,换成你自己local的文件Path,
2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump(); 里面的100就好,改成500,就会输出前500行数据,但是太多LinqPad会只输出前1000行
3)如果要取中间数据,比如从1500行-2000行,把.Take(100).Dump();换成.Skip(1500).Take(500).Dump(); 就好
剩下的我commont掉的是做更复杂的数据分析用的,比如说找出20个人注册同一地址等
等;这个如果是.net或者SQL熟手可以继续玩
void Main()
{
string file1 = @"C:\Data\WI\2152_5758.txt";
File.ReadLines(file1).Skip(1).Select(s => new VoterInfo(s)).Take(100).
Dump();
//.Where(s=>s.ElectionName.StartsWith("2020 General Election"))
//.Where(s => s.DateBallotReturned != null && s.DateBallotSent != null)
//.Where(s=>s.BallotDeliveryMethod == "Mail") // .Take(10).Dump();
//.GroupBy(s => s.BallotDeliveryMethod, s => s.VoterRegNumber).Select(s => $"{s.Key}, {s.Count()}").Dump();
//.Where(s=>s.VoterRegNumber == "701040741").Dump();
// .GroupBy(s=>s.VoterRegNumber, s=>s.VoterRegNumber).Where(s=>s.Count() > 1).Dump();
}
public class VoterInfo
{
public VoterInfo(string rawstring)
{
string[] items = rawstring.Split('\t');
this.VoterRegNumber = items[0];
this.LastName = items[1];
this.FirstName = items[2];
this.MiddleName = items[3];
this.Suffix = items[4];
this.VoterStatus = items[5];
this.VoterStatusReason = items[6];
this.VoterType = items[7];
this.Address1 = items[8];
this.Address2 = items[9];
this.HouseNumber = items[10];
this.StreetName = items[11];
this.UnitType = items[12];
this.UnitNumber = items[13];
this.ZipCode = items[14];
this.MailingAddress1 = items[15];
this.MailingAddress2 = items[16];
this.MailingCityStateZip = items[17];
this.PhoneNumber = items[18];
this.EmailAddress = items[19];
this.Jurisdiction = items[20];
this.County = items[21];
this.AbsApplicationDate = items[22];
this.ApplicationSource = items[23];
this.ApplicationType = items[24];
this.AbsenteeAddressName = items[25];
this.ElectionName = items[26];
this.BallotReasonType = items[27];
this.BallotType = items[28];
this.BallotStatus = items[29];
this.DistrictCombo = items[30];
this.WARDNAME = items[31];
this.BallotStatusReason = items[32];
this.BallotDeliveryMethod = items[33];
DateTime date;
if(DateTime.TryParse(items[34], out date))
DateBallotSent = date;
if (DateTime.TryParse(items[35], out date))
DateBallotReturned = date;
}
public string VoterRegNumber { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string Suffix { get; set; }
public string VoterStatus { get; set; }
public string VoterStatusReason { get; set; }
public string VoterType { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string HouseNumber { get; set; }
public string StreetName { get; set; }
public string UnitType { get; set; }
public string UnitNumber { get; set; }
public string ZipCode { get; set; }
public string MailingAddress1 { get; set; }
public string MailingAddress2 { get; set; }
public string MailingCityStateZip { get; set; }
public string PhoneNumber { get; set; }
public string EmailAddress { get; set; }
public string Jurisdiction { get; set; }
public string County { get; set; }
public string AbsApplicationDate { get; set; }
public string ApplicationSource { get; set; }
public string ApplicationType { get; set; }
public string AbsenteeAddressName { get; set; }
public string ElectionName { get; set; }
public string BallotReasonType { get; set; }
public string BallotType { get; set; }
public string BallotStatus { get; set; }
public string DistrictCombo { get; set; }
public string WARDNAME { get; set; }
public string BallotStatusReason { get; set; }
public string BallotDeliveryMethod { get; set; }
public DateTime? DateBallotSent { get; set; }
public DateTime? DateBallotReturned { get; set; }
}
👍,需要更多信息才能挖到舞弊证据。
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
这只是第一步,要找律师,才能把证据递上去。
要知道自己的目标,不能玩物丧志。
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
为什么不召唤蟒蛇, 我今晚来写个parser
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
这破网站,把\t给吃掉了
string[] items = rawstring.Split('t'); 里面的't'应该是'\t'
string[] items = rawstring.Split('\t');
我联系呢,莫着急,你要不要把我举报给aoc?
【 在 wang9 (老王) 的大作中提到: 】
: 这只是第一步,要找律师,才能把证据递上去。
: 要知道自己的目标,不能玩物丧志。
: );
这王八就是一个说风凉话的,不用睬他。
【 在 daemonself (新晋川粉,前mit行为艺术专业博士后导师) 的大作中提到: 】
: 我联系呢,莫着急,你要不要把我举报给aoc?
很好, 支持一下楼主.
看来是真人啊,文科生吧,折腾这个,我见犹怜。我劝你别折腾了, move on 吧,谁
做总统,其实有啥差別,不高兴四年后把他选下来呗,想开点。
【 在 wocow (wocow) 的大作中提到: 】
: 看来是真人啊,文科生吧,折腾这个,我见犹怜。我劝你别折腾了, move on 吧,谁
: 做总统,其实有啥差別,不高兴四年后把他选下来呗,想开点。
折腾啥,这玩意又不费时间,你以为我花了多长时间写着程序?最多10分钟多一点,
你们这是要干嘛?要分析什么?为什么要用这么原始的办法?
【 在 bigCat2012 (大猫一只) 的大作中提到: 】
: 感谢其他几位网友的辛勤工作,我就不点名了,WI数据原始下载
: https://gofile.io/d/XwcWGo
: 第二步下载LinqPad
: https://www.linqpad.net/Download.aspx
: 5,6都行,无所谓,我用的是version 5
: 把我以下的代码copy进去,然后在那个Language Drop down选项中选择“C# Program”
: ,press F5或者按Play Button运行就能输出;
: 注意几点:
: 1)把程序里面的 “C:DataWI2152_5758.txt”,换成你自己local的文件Path,
: 2)这个程序运行会输出前100行数据,如果要输出更多,只要更改.Take(100).Dump();
: ...................
【 在 Gerdo (Test) 的大作中提到: 】
: 你们这是要干嘛?要分析什么?为什么要用这么原始的办法?
: );
这不是原始,这是方便让普通人,甚至不懂电脑的人也能轻松看到数据;任何人如果按照我的方法+步骤,下载linqpad,10分钟就能看到数据,做他自己判断;
用你的“非原始”导入数据库的方法,那得计算机科班的人才能明白,ok?
这个论坛有什么方法可以贴图吗?还是只能发文字信息?
为什么有两个文件?分别是什么?
identified-in-pennsylvania-alone/