使用带遮罩的simbols,python过滤原始字符串

时间:2019-05-18 14:46:14

标签: python

是否有机会从以下原始字符串中获取城市名称而无需进行大量迭代?

'\nSegelbåt \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\
t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tÄlvsborg\n\t\t\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t'

'\nSegelbåt \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t
\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tÄlvsborg\n\t\t\t\
t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t', 

'\nButik\nSegelbåt \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tStockholm\n\t\t\t\t\
t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\
t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t'

需要获得Älvsborg,Stockholm等城市名称,即城镇。名称会有所不同

函数在迭代中已经很繁重,因此最好使用构建或附加函数/方法。

还可以采用以下格式获取它们:


SegelbåtÄlvsborg
ButikSegelbåtStockholm
ButikSegelbåtStockholm
SegelbåtJönköping
SegelbåtGöteborg
ButikSegelbåtGöteborg
ButikSegelbåtGöteborg
SegelbåtSkaraborg
SegelbåtStockholm
SegelbåtStockholm
SegelbåtHalland
SegelbåtStockholm
ButikSegelbåtHelsingborg
SegelbåtStockholm
ButikSegelbåtKalmar
SegelbåtGöteborg
ButikSegelbåtGöteborg
ButikSegelbåtÖstergötland
ButikSegelbåt
ButikSegelbåtGöteborg
ButikSegelbåtGöteborg
ButikSegelbåtGöteborg
ButikSegelbåtGöteborg
SegelbåtStockholm
ButikSegelbåtHelsingborg
SegelbåtKalmar
SegelbåtGöteborg

这不会使工作变得容易。

谢谢!

p.s。我可以在FOR循环中将字母和带遮罩的符号分开:

letters = ''.join(filter(lambda x: False if x.isspace() else True,
                                     place.get_text()

然后,我仍然需要以某种方式分隔城市名称...

2 个答案:

答案 0 :(得分:1)

您可以使用re.sub一步完成此操作:

import re
text = """\nSegelbåt \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tÄlvsborg\n\t\t\t\t\t\t\t\t
\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
"""

v = re.sub(r'\s', '', text)
print(v)

输出:

SegelbåtÄlvsborg

答案 1 :(得分:1)

您可以只使用str.split

In [1]: s = '\nSegelbåt \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tÄlvsborg\n\t\t\t\t\t\t\t\t\
  ... t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t'

In [2]: s.split()  # when called with no argument it splits on all whitespace
Out[2]: ['Segelbåt', 'Älvsborg']

城市名称似乎是最后一个元素:

In [3]: s.split()[-1]
Out[3]: 'Älvsborg'

您似乎正在使用BeautifulSoup解析HTML。您可能会发现直接选择适当的元素而不是解析.get_text()产生的内容会更容易。