【发布时间】:2022-12-01 05:48:27
【问题描述】:
基于最初由 u/commandlineluser 在 reddit 上建议的脚本,我(作为 Python 新手)试图修改原始代码以删除不需要的部分,这些部分因列值而异。 Python 脚本涉及创建一个包含键和值的字典,并使用带有 str.replace 的列表理解。
(reddit 上 u/commandlineluser 的原始脚本的一部分)
extensions = "dat", "ssp", "dta", "v9", "xlsx"
(下一行是我对上面部分的修改,下面是完整的代码块)
extensions = "dat", "ssp", "dta", "20dta", "u20dta", "f1dta", "f2dta", "v9", "xlsx"
有些结果与我想要的不同。请看下面(我试过的)。
import pandas as pd
import re
data = {"full_url": ['https://meps.ahrq.gov/data_files/pufs/h225/h225dat.zip',
'https://meps.ahrq.gov/data_files/pufs/h51bdat.zip',
'https://meps.ahrq.gov/data_files/pufs/h47f1dat.zip',
'https://meps.ahrq.gov/data_files/pufs/h225/h225ssp.zip',
'https://meps.ahrq.gov/data_files/pufs/h220i/h220if1dta.zip',
'https://meps.ahrq.gov/data_files/pufs/h220h/h220hv9.zip',
'https://meps.ahrq.gov/data_files/pufs/h220e/h220exlsx.zip',
'https://meps.ahrq.gov/data_files/pufs/h224/h224xlsx.zip',
'https://meps.ahrq.gov/data_files/pufs/h036brr/h36brr20dta.zip',
'https://meps.ahrq.gov/data_files/pufs/h036/h36u20dta.zip',
'https://meps.ahrq.gov/data_files/pufs/h197i/h197if1dta.zip',
'https://meps.ahrq.gov/data_files/pufs/h197i/h197if2dta.zip']}
df = pd.DataFrame(data)
extensions = ["dat", "ssp", "dta", "20dta", "u20dta", "f1dta", "f2dta", "v9", "xlsx"]
replacements = dict.fromkeys((f"{ext}[.]zip$" for ext in extensions), "")
df["file_id"] = df["full_url"].str.split("/").str[-1].replace(replacements, regex=True)
print(df["file_id"])
注释输出
0 h225 (looks good) 1 h51b (looks good) 2 h47f1 (h47 -> desired) 3 h225 (looks good) 4 h220if1 (h220i -> desired) 5 h220h (looks good) 6 h220e (looks good) 7 h224 (looks good) 8 h36brr20 (h36brr -> desired) 9 h36u20 (h36 -> desired) 10 h197if1 (h197i -> desired) 11 h197if2 (h197i -> desired)
【问题讨论】: