2019-07-26 22:14:10 +02:00
|
|
|
import csv_metadata_quality.check as check
|
2019-07-26 21:11:10 +02:00
|
|
|
import csv_metadata_quality.fix as fix
|
|
|
|
import pandas as pd
|
2019-07-28 15:11:36 +02:00
|
|
|
import re
|
2019-07-26 21:11:10 +02:00
|
|
|
|
2019-07-27 22:09:16 +02:00
|
|
|
def main():
|
2019-07-26 21:11:10 +02:00
|
|
|
# Read all fields as strings so dates don't get converted from 1998 to 1998.0
|
2019-07-26 23:25:30 +02:00
|
|
|
df = pd.read_csv('data/test.csv', dtype=str)
|
2019-07-26 21:11:10 +02:00
|
|
|
|
|
|
|
# Fix whitespace in all columns
|
|
|
|
for column in df.columns.values.tolist():
|
2019-07-26 22:49:13 +02:00
|
|
|
# Run whitespace fix on all columns
|
2019-07-26 21:11:10 +02:00
|
|
|
df[column] = df[column].apply(fix.whitespace)
|
|
|
|
|
2019-07-26 22:48:24 +02:00
|
|
|
# Run invalid multi-value separator check on all columns
|
|
|
|
df[column] = df[column].apply(check.separators)
|
|
|
|
|
2019-07-28 16:27:20 +02:00
|
|
|
# check if column is an issn column like dc.identifier.issn
|
|
|
|
match = re.match(r'^.*?issn.*$', column)
|
|
|
|
if match is not None:
|
2019-07-26 22:14:10 +02:00
|
|
|
df[column] = df[column].apply(check.issn)
|
|
|
|
|
2019-07-28 16:27:20 +02:00
|
|
|
# check if column is an isbn column like dc.identifier.isbn
|
|
|
|
match = re.match(r'^.*?isbn.*$', column)
|
|
|
|
if match is not None:
|
2019-07-26 22:14:10 +02:00
|
|
|
df[column] = df[column].apply(check.isbn)
|
|
|
|
|
2019-07-28 15:11:36 +02:00
|
|
|
# check if column is a date column like dc.date.issued
|
|
|
|
match = re.match(r'^.*?date.*$', column)
|
|
|
|
if match is not None:
|
|
|
|
df[column] = df[column].apply(check.date)
|
|
|
|
|
2019-07-26 21:11:10 +02:00
|
|
|
# Write
|
2019-07-26 22:14:37 +02:00
|
|
|
df.to_csv('/tmp/test.fixed.csv', index=False)
|