我正在使用beautifulsoup查找网页上的所有位置,并且确实如此。
get_location = second_soup.find_all('span', attrs={"class": "location"})
for local in get_location :
if local:
s = local.text
s = s.replace("\n", "")
s = s.replace("-", "") #removes the -
s = s.split("|", 1)[0] #removes | and everything after it
s = ''.join([i for i in s if not i.isdigit()]) #removes numbers from zip
s = s.lstrip() #removes spaces
s = s.rstrip() #removes spaces
print(s)
我得到以下结果:
New York, NY
Brooklyn, NY
Johnville, KY
但是,我需要这样:
New York, NY, Brooklyn, NY, Johnville, KY
我尝试过的事情:
1)代替s.replace("\n", "")
使用s.replace("\n", ", ")
结果相同,除了\ n替换为,
之外,我得到:
, New York, NY,
, Brooklyn, NY,
, Johnville, KY,
2)删除替换并使用s = '\n'.join([line.strip() for line in s])
结果很奇怪,我每行只有一个字符。如:
N
E
W
Y
O
R
K
我需要单行代码的原因是我将其插入到数组中,而我无法在数组中插入多行,所以得到New York, NY
就是这样
这就是我想要我的数组的方式:
['New York, NY, Brooklyn, NY, Johnville, KY', 'Boston, MA, Miami, FL']
等
答案 0 :(得分:1)
由于我们没有您的数据,因此我无法测试,但我认为您需要以下信息:
get_location = second_soup.find_all('span', attrs={"class": "location"})
rebuilt = []
for local in get_location :
if local:
s = local.text
s = s.replace("\n", "")
s = s.replace("-", "") #removes the -
s = s.split("|", 1)[0] #removes | and everything after it
s = ''.join([i for i in s if not i.isdigit()]) #removes numbers from zip
s = s.strip() #removes spaces
rebuilt.extend(s)
print(rebuilt)
答案 1 :(得分:0)
您可以执行以下操作以逗号替换换行符:
s = ', '.join(s.split('\n'))
但是,如果您可以提供一个正在使用的示例数据blob,将会很有帮助。
答案 2 :(得分:0)
在“ if”循环的最后一行-打印,因为每行都使用print的“ end”参数设置为default ='\ n'。因此,它在每个循环的下一行中打印。 因此,如果将参数设置为comma(,)或根据您的选择,则输出将打印在同一行中。 试试这个:-
print(s, end=',')