【问题标题】:how to fix the worrd in the table column?如何修复表格列中的单词?
【发布时间】:2020-08-26 09:12:46
【问题描述】:

我正在从网站中提取表格。我已经尝试过 Pandas 和 BeautifulSoup。

这是我尝试过的代码示例:

    res = requests.get("https://www.dasoertliche.de/Themen/Postleitzahlen/Berlin.html")
    soup = BeautifulSoup(res.content,'lxml')   
    table = soup.find_all('table')[0]    
    df = pd.read_html(str(table))[0]    
    df    

网站表格如下所示 我的结果看起来像这样

我希望第三列中的单词用逗号分隔 有什么想法吗?!

【问题讨论】:

  • 试试pd.read_html("https://www.dasoertliche.de/Themen/Postleitzahlen/Berlin.html")[0]

标签: python pandas string beautifulsoup python-3.6


【解决方案1】:

试试这个:

html = requests.get('https://www.dasoertliche.de/Themen/Postleitzahlen/Berlin.html').text.replace("<br/>", ', ')
df = pd.read_html(html, attrs={'id': 'tl-plz'})[0]
df

问题是&lt;br/&gt;在table里面,所以我们先把它去掉。

【讨论】:

  • 我没有尝试其他建议,但这个对我来说效果很好
【解决方案2】:

如果您将看到 HTML 响应。您将在该列中找到&lt;br/&gt; 标记,以便在下一行显示每个标记。您可以简单地将&lt;br/&gt; 替换为 ,

res = requests.get("https://www.dasoertliche.de/Themen/Postleitzahlen/Berlin.html")
soup = BeautifulSoup(res.content,'lxml')   
table = str(soup.find_all('table')[0]) 

#replce <br> with comma
table = table.replace("<br/>", ",")

df = pd.read_html(str(table))[0]    
df 

输出:

【讨论】:

    【解决方案3】:

    我不知道这是否是一个选项,但您可以尝试使用正则表达式 - 如果模式是固定的,即所有单独的单词都以大写开头,并且没有其他大写字符出现在单独的字符串中,您可以尝试在每个大写字母前添加空格:

    for i in range(len(df)):
        df['Ortsteil'][i] = re.sub(r"(\w)([A-Z])", r"\1 \2", df['Ortsteil'][i]) 
    

    或者不循环df:

    df['Ortsteil'] = df['Ortsteil'].apply(lambda x: re.sub('(\w)([A-Z])', r"\1 \2", str(x)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      相关资源
      最近更新 更多