这是一个较大的程序的一部分,旨在帮助翻译当前日历中的罗马日期。
我需要如下链接一个“列表数据库”(所有罗马领事馆及其日期)
def date_():
if name in list1[Name A, Name B, Name C]:
date = 509
return date
if name in list2[Name D, Name E]:
date = 508
return date
if name in list3[Name F]:
etc...
目的是用户输入“名称”,然后将日期分配给变量。然后,将在所有列表中搜索名称并将其分配给相应的日期。
name = input("Consulate name: ")
date = date_()
print(name, " was consulate in ", date)
但是手工做是纯粹的自杀(如果列表中有名字,我们将有800个左右[]:]。
我的问题是
1°可以那样做吗?还是我只是在做一些很容易理解但有些愚蠢的事情?
2°,我是否可以通过某种方式提取Wikipedia list以使800个列表已经完成了名称和日期分配?如果不是,我应该在Excel中执行此操作,然后找到制作列表的方法吗?在Excel中执行800会很痛苦,但要比在Python中少。我也可以尝试使用RDF here中的SPARQL来仅选择具有其名称和领事馆日期的领事,但我不知道它是如何工作的...
感谢您的任何想法!
因为值在表中,所以您可以使用pandas
来读取页并以DataFrames
的形式获取表
但是它可能仍需要一些工作才能连接表并填充空白单元格。当您拥有所有数据时,可以将其保存在字典中。
d = {"Name A": 509, "Name B": 509, "Name C": 509, "Name D": 508, "Name E": 508, ...}
并且使用简单
date = d.get(name, None)
从Wikipedia页面获取所有表的简单代码
import pandas as pd
all_tables = pd.read_html('https://en.wikipedia.org/wiki/List_of_Roman_consuls')
print('number of tables:', len(all_tables))
for number, df in enumerate(all_tables):
print('\n---', number, '---\n')
print(df.head())
结果:
number of tables: 18
--- 0 ---
Ancient Rome
Periods
Roman Kingdom753–509 BC Roman Republic509–27 BC Roman Empire27 BC – AD 395 Principate Dominate WesternAD 395–476 EasternAD 395–1453 Timeline
0 Roman Constitution
1 Constitution of the Kingdom Constitution of th...
2 Precedent and law
3 Roman law Ius Imperium Mos maiorum Collegialit...
4 Assemblies
--- 1 ---
0 ... 3
0 A. = Aulus Ap. = Appius C. = Gaius Cn. = Gnaeu... ... Sex. = Sextus Sp. = Spurius T. = Titus Ti. = T...
[1 rows x 4 columns]
--- 2 ---
Year Consul prior Consul posterior
0 509 L. Junius Brutus L. Tarquinius Collatinus
1 suff. Sp. Lucretius Tricipitinus P. Valerius Poplicola
2 suff. M. Horatius Pulvillus NaN
3 508 P. Valerius Poplicola II T. Lucretius Tricipitinus
4 507 P. Valerius Poplicola III M. Horatius Pulvillus II[18]
--- 3 ---
Year ... Consul posterior
0 500 ... M'. Tullius Longus
1 499 ... C. Veturius Geminus Cicurinus
2 498 ... T. Lartius (Flavus or Rufus) II
3 497 ... M. Minucius Augurinus
4 496 ... T. Verginius Tricostus Caeliomontanus
[5 rows x 3 columns]
--- 4 ---
Year Consul prior Consul posterior
0 400 Consular Tribunes NaN
1 NaN P. Licinius Calvus Esquilinus P. Maelius Capitolinus
2 NaN P. Manlius Vulso Sp. Furius Medullinus
3 NaN L. Titinius Pansa Saccus L. Publilius Philo Vulscus
4 399 Consular Tribunes NaN
--- 5 ---
Year Consul prior Consul posterior
0 300 M. Valerius Maximus Corvus V Q. Appuleius Pansa
1 299 M. Fulvius Paetinus T. Manlius Torquatus
2 suff. NaN M. Valerius Maximus Corvus VI
3 298 L. Cornelius Scipio Barbatus Cn. Fulvius Maximus Centumalus
4 297 Q. Fabius Maximus Rullianus IV P. Decius Mus III
--- 6 ---
Year Consul prior Consul posterior
0 200 P. Sulpicius Galba Maximus II C. Aurelius Cotta
1 199 L. Cornelius Lentulus P. Villius Tappulus
2 198 T. Quinctius Flamininus Sex. Aelius Paetus Catus
3 197 C. Cornelius Cethegus Q. Minucius Rufus
4 196 L. Furius Purpureo M. Claudius Marcellus
--- 7 ---
Year Consul prior Consul posterior
0 100[63] C. Marius VI L. Valerius Flaccus
1 99 M. Antonius A. Postumius Albinus
2 98 Q. Caecilius Metellus Nepos T. Didius
3 97 Cn. Cornelius Lentulus P. Licinius Crassus
4 96 Cn. Domitius Ahenobarbus C. Cassius Longinus
--- 8 ---
Year ... Consul posterior
0 1[77] ... L. Aemilius Paullus (January–June)
1 suff. ... M. Herennius Picens (July–December)
2 2 ... P. Alfenus Varus
3 suff. ... T. Quinctius Crispinus Valerianus
4 3 ... M. Servilius
[5 rows x 3 columns]
--- 9 ---
Year ... Consul posterior
0 101[134] ... Q. Articuleius Paetus II (January–March)
1 suff. ... NaN
2 suff. ... M. Maecius Celer
3 suff. ... ignotus
4 suff.[135] ... L. Julius Marinus Caecilius Simplex
[5 rows x 3 columns]
--- 10 ---
Year ... Consul posterior
0 201 ... M. Nonius Arrius Mucianus
1 202 ... Imp. Caesar M. Aurelius Antoninus Augustus
2 suff.[182] ... C. Cassius Regallianus
3 203 ... P. Septimius Geta II
4 204 ... M. Annius Flavius Libo
[5 rows x 3 columns]
--- 11 ---
Year ... Consul posterior
0 301 ... Virius Nepotianus
1 302 ... C. Galerius Valerius Maximianus Caesar IV
2 303 ... Imp. Caesar M. Aurelius Valerius Maximianus Au...
3 304 ... Imp. Caesar M. Aurelius Valerius Maximianus Au...
4 305 ... C. Galerius Valerius Maximianus Caesar V
[5 rows x 3 columns]
--- 12 ---
Year Consul prior Consul posterior
0 396.0 Flavius Arcadius Augustus IV Flavius Honorius Augustus III
1 397.0 Flavius Caesarius Nonius Atticus
2 398.0 Flavius Eutychianus Flavius Honorius Augustus IV
3 399.0 Eutropius Flavius Mallius Theodorus
4 400.0 Aurelianus Flavius Stilicho
--- 13 ---
Year Eastern Roman Consul
0 535[205] Flavius Belisarius
1 536 Post consulatum Belisarii
2 537 II post consulatum Belisarii
3 538 Flavius Marianus Michaelius Gabrielius Archang...
4 539 Flavius Strategius Apion Strategius Apion
--- 14 ---
vteAncient Rome topics vteAncient Rome topics.1
0 Outline Timeline Outline Timeline
1 Epochs Foundation Kingdom overthrow Republic Empire P...
2 Foundation Kingdom overthrow Republic Foundation Kingdom overthrow Republic
3 Empire Pax Romana Principate Dominate Western Empire ...
4 Constitution History Kingdom Republic Empire Late Empire Se...
--- 15 ---
0 1
0 Foundation Kingdom overthrow Republic Foundation Kingdom overthrow Republic
1 Empire Pax Romana Principate Dominate Western Empire ...
--- 16 ---
0 1
0 Ordinary Consul Censor Praetor Tribune Tribune of the P...
1 Extraordinary Rex Interrex Dictator Magister Equitum Decemvi...