如何使用Python链接“列表数据库”?

问题描述 投票:1回答:1

这是一个较大的程序的一部分,旨在帮助翻译当前日历中的罗马日期。

我需要如下链接一个“列表数据库”(所有罗马领事馆及其日期)

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来仅选择具有其名称和领事馆日期的领事,但我不知道它是如何工作的...

感谢您的任何想法!

python list sparql
1个回答
1
投票

因为值在表中,所以您可以使用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...
© www.soinside.com 2019 - 2024. All rights reserved.