【发布时间】:2021-02-26 11:56:40
【问题描述】:
我有一些从网站上刮下来的元素,当我使用以下代码打印它们时,它们整齐地显示为间隔元素。
print("\n" + time_element)
这样打印
F下午 4 点到 5:50
但是当我将 time_element 作为列传递到数据框并将其转换为字符串时,输出如下所示
# b' \n F\n \n 4pm-5:50pm\n
我无法理解为什么会这样以及如何摆脱这个“\n”字符。我尝试使用正则表达式来匹配“F”和“4pm-5:50pm”,我认为这样我可以分离出我需要的数据。但是使用各种方法,包括
# Define the list and the regex pattern to match
time = df['Time']
pattern = '[A-Z]+'
# Filter out all elements that match the pattern
filtered = [x for x in time if re.match(pattern, x)]
print(filtered)
我得到一个空列表。
根据我的研究,我了解到“\n”代表一个新行,并且可能有不可见的字符。但是,我不了解它们的行为方式,因此我可以摆脱它们/围绕它们来提取我需要的数据。
当我将数据传递为 csv 格式时,它会在一个单元格中打印出来
F下午 4 点至下午 5 点 50 点
但是在分离出我需要的数据时,我仍然处于类似的位置。
【问题讨论】:
-
match不起作用,您需要re.search,因为您的模式不在开始。 -
在数据框中你只是得到数据的表示,因此
\n。尝试打印数据。 -
re.search 帮助回答了我的列表为何空无一物的问题
-
你也可以过滤掉所有的空白:
"".join(x for x in time if not x.isspace())
标签: python html dataframe web-scraping