是否有机会从以下原始字符串中获取城市名称而无需进行大量迭代?
'\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()
然后,我仍然需要以某种方式分隔城市名称...
答案 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()
产生的内容会更容易。