你能帮我读一下这个csv文件吗?
“^ GSPC”,1403.36, “4/27/2012”, “下午四点32”,+ 3.38,1400.19,1406.64,1397.31,574422720 “^ IXIC”,3069.20, “4/27/2012”, “下午5:30”,+ 18.59,3060.34,3076.44,3043.30,0
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *absoluteURL = @"http://myserver/data.csv";
NSURL *url = [NSURL URLWithString:absoluteURL];
NSString *fileString = [[NSString alloc] initWithContentsOfURL:url];
NSScanner *scanner = [NSScanner scannerWithString:fileString];
[scanner setCharactersToBeSkipped:
[NSCharacterSet characterSetWithCharactersInString:@"\n, "]];
NSMutableArray *newPoints = [NSMutableArray array];
}
答案 0 :(得分:2)
处理CSV解析比初始代码暗示的要快,因为需要忽略引用的分隔符。例如,
1,"Hello, world!",2
有三列,但NSScanner
会找到四个令牌(1
,"Hello
,“世界!”和2
)。
要构建功能齐全的CSV解析器,需要处理许多特殊情况,因此使其工作的最快方法是使用预先构建的解析器。例如,您可以使用this answer on Stack Overflow中描述的解析器。
答案 1 :(得分:0)
我可能来不及回答这个问题,但可能这个答案可以帮助某人轻松阅读CSV文件。这是我没有阅读CSV文件
- (void)viewDidLoad {
[super viewDidLoad];
// printing the file path
NSMutableArray *colA = [NSMutableArray array];
NSMutableArray *colB = [NSMutableArray array];
NSMutableArray *colC = [NSMutableArray array];
NSMutableArray *colD = [NSMutableArray array];
// NSString* fileContents = [NSTemporaryDirectory()
stringByAppendingPathComponent:@"yourfile.csv"];
NSString *fileContents = [[NSBundle mainBundle]
pathForResource:@"yourfile" ofType:@"csv"];
NSURL*URl = [NSURL fileURLWithPath:fileContents];
// NSString* fileContents = [NSString
stringWithContentsOfURL:@"YourFile.csv"];
NSError *error;
NSString* fileContentss = (NSString *)[NSString
stringWithContentsOfURL:URl encoding:NSASCIIStringEncoding
error:&error];
NSMutableArray *newArra = [[NSMutableArray alloc] init];
[fileContentss stringByReplacingOccurrencesOfString:@"\""
withString:@""];
NSArray* rows = [fileContentss
componentsSeparatedByString:@"\n"];
NSMutableArray *roearr = [[NSMutableArray alloc] init];
roearr = [rows mutableCopy];
[roearr removeObjectAtIndex:[rows count] - 1];
for (NSString *row in roearr){
NSArray* columns = [row componentsSeparatedByString:@","];
newArra = [columns mutableCopy];
[newArra removeObjectAtIndex:[newArra count] - 1];
[colA addObject:newArra[0]];
[colB addObject:newArra[1]];
[colC addObject:newArra[2]];
[colD addObject:columns[3]];
}
NSLog(@"columns[0] %@",colA);
NSLog(@"columns[0] %@",colB);
NSLog(@"columns[0] %@",colC);
NSLog(@"columns[0] %@",colD);
// Do any additional setup after loading the view, typically from
a nib.
}