如何修复 table 列中的单词?
how to fix the worrd in the table column?
我正在从网站中提取 table。我已经尝试过 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
网站 table 看起来像这样
我的结果是这样的
我要第三列的单词用逗号隔开
有什么想法吗?!
如果您将看到 HTML 响应。您会在该列中找到 <br/>
标签,用于在下一行中显示每个标签。您可以简单地将 <br/>
替换为 ,
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
输出:
我不知道它是否是一个选项,但您可以尝试使用正则表达式 - 如果模式是固定的,即所有单独的单词都以大写字母开头,并且没有其他大写字符出现在单独的字符串中,您可以尝试在每个大写字母前添加空格:
for i in range(len(df)):
df['Ortsteil'][i] = re.sub(r"(\w)([A-Z])", r" ", df['Ortsteil'][i])
或者不循环 df:
df['Ortsteil'] = df['Ortsteil'].apply(lambda x: re.sub('(\w)([A-Z])', r" ", str(x)))
试试这个:
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
问题出在table里面的<br/>
,所以我们先去掉它。
我正在从网站中提取 table。我已经尝试过 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
网站 table 看起来像这样
我要第三列的单词用逗号隔开 有什么想法吗?!
如果您将看到 HTML 响应。您会在该列中找到 <br/>
标签,用于在下一行中显示每个标签。您可以简单地将 <br/>
替换为 ,
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
输出:
我不知道它是否是一个选项,但您可以尝试使用正则表达式 - 如果模式是固定的,即所有单独的单词都以大写字母开头,并且没有其他大写字符出现在单独的字符串中,您可以尝试在每个大写字母前添加空格:
for i in range(len(df)):
df['Ortsteil'][i] = re.sub(r"(\w)([A-Z])", r" ", df['Ortsteil'][i])
或者不循环 df:
df['Ortsteil'] = df['Ortsteil'].apply(lambda x: re.sub('(\w)([A-Z])', r" ", str(x)))
试试这个:
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
问题出在table里面的<br/>
,所以我们先去掉它。