python - 从 csv 重新格式化日期并将它们写入新的 csv
问题描述
我刚开始学习python,以便我可以制作一个可以操作银行对帐单cvs文件的程序,但我不太了解。我有一个 csv 文件,其中包含一列日期,格式为:月+日+年。示例包括 3/3/20、12/2/20、9/13/20 等。
我想从列中获取这些日期并将它们重新格式化为格式:年+月+日。我需要它们的格式示例包括 200303、201202、200913 等。
但我不知道如何从我的原始 csv 文件中获取信息并继续对其重新排序并将其写入我的新 csv 文件。我需要对这些步骤进行大量解释,因为我对此很陌生。尽管所有帮助都表示赞赏:)
这是我到目前为止所尝试的:
bank_statement = '/Users/annamobley/Library/Mobile Documents/com~apple~CloudDocs/Python/3 March 2020.csv'
# import initial bank statement
import csv
with open(bank_statement, 'rt')as initial_file:
data = csv.reader(initial_file)
for row in data:
original_dates = str(row[1])
# find number of rows in the initial bank statement
file = open(bank_statement)
reader = csv.reader(file)
lines = len(list(reader))
num_lines = int(lines) - int(1)
# variables in new csv
upload_statement = 'manip_bank_statement.csv'
bank_abbreviation = "GCB"
acc_num = input('Enter the account number : ')
acc_name = input("Enter the Account Name/Description (): ")
# date format manipulation
first_2_num_year = input(
"Input the first two numbers in the year that it is currently. Ex: If it is the year 2019, input '20': ")
import datetime as dt
post_date_original = row[1]
manipulated_date = (dt.datetime.date(dt.datetime.strptime(original_dates, '%m/%d/%y')).strftime('%y%m%d'))
final_date = str(first_2_num_year + manipulated_date)
# writing the new csv
import csv
with open(upload_statement, 'w', newline='') as file:
writer = csv.writer(file)
for somevariable in range(num_lines):
writer.writerow([bank_abbreviation, acc_num, acc_name, final_date])
我收到错误消息:
Traceback (most recent call last):
File "/Users/annamobley/PycharmProjects/CSV_Manipulation_Project/Project.2.redo.py", line 41, in <module>
manipulated_date = (dt.datetime.date(dt.datetime.strptime(original_dates, '%m/%d/%y')).strptime('%y%m%d'))
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/_strptime.py", line 352, in _strptime
raise ValueError("unconverted data remains: %s" %
ValueError: unconverted data remains: 19
解决方案
您可以使用该datetime
模块转换日期。
import datetime as dt
day = '3/3/20'
print(
dt.datetime.date(
dt.datetime.strptime(day, '%m/%d/%y')
).strftime('%y%m%d')
)
Output:
200303
这是datetime
模块https://docs.python.org/3/library/datetime.html的一个很好的资源
推荐阅读
- javascript - NodeJS 无法处理通过 POST 接收的对象数组
- angular - Angular patchValue() 不更新 Ant Design 自定义表单控件
- python - 从 Jenkins 运行 CANoe 时访问被拒绝错误
- laravel - Laravel:任务有很多子任务,每个子任务可以有很多任务,没有限制
- bash - 使用 shell 脚本在文件中添加行数组
- windows - 在批处理文件中提取第二行输出
- fiware - FIWARE IoT 代理框架:如何在 IoT 代理中定义具有嵌套属性的设备,例如 geo:json?
- amazon-web-services - 不允许使用 post 方法的 Presigned_url
- python - 转置字典列表
- asp.net - 授权和允许匿名 asp.net 核心