-1

我制作了一个读取名称选择的程序,然后将其转换为 Unicode 示例

StevensJohn:-:
WasouskiMike:-:
TimebombTime:-:
etc

有没有办法制作一个可以拆分索引的列表,所以它就像

example_list = ["StevensJohn", "WasouskiMike", "TimebombTim"] 

这将是动态的,因此将从网络抓取中返回名称和不同名称的数量。

任何输入将不胜感激。

代码

results = unicode("""
Hospitality
Customer Care
Wick , John 12:00-20:00
Wick , John 10:00-17:00
Obama , Barack 06:00-14:00
Musk , Elon 07:00-15:00
Wasouski , Mike 06:30-14:30
 Production
Fries
Piper , Billie 12:00-20:00
Tennent , David 06:30-14:30
Telsa, Nikola 11:45-17:00
Beverages & Desserts in a Dual Lane Drive-thru with a split beverage cell
Timebomb , Tim 06:30-14:30
Freeman , Matt 08:00-16:00
Cool , Tre 11:45-17:00
Sausage
Prestly , Elvis 06:30-14:30
Fat , Mike 06:30-14:30
Knoxville , Johnny 06:00-14:00
Man , Wee 05:00-12:00
Heartness , Jack 09:00-16:00
Breakfast BOP
Schofield , Phillip 06:30-14:15
Burns , George 06:30-14:15
Johnson , Boris 06:30-14:30
Milliband, Edd 06:30-14:30
Trump , Donald 10:00-17:00
Biden , Joe 08:00-16:00
Tempering & Prep
Clinton , Hillary 11:00-19:00

""")

for span in results:
    results = results.replace(',', '')
    results = results.replace(" ", "")
    results = results.replace("/r","")
    results = results.replace(":-:", "\r")
    results = ''.join([i for i in results if not i.isdigit()])
    print(results)
4

3 回答 3

0

您的编辑表明这确实是一个XY 问题。您尝试连续修剪小子字符串将不可避免地遇到一些不应该删除某些子字符串的极端情况。一种常见的替代方法是使用正则表达式。

import re
matches=[''.join([m.group(1), m.group(2)]) for m in re.iterfind(r"([A-Za-z']+)\s*,\s*([A-Za-z'.]+)\s+\d+:\d+-\d+:\d+", results)]

演示:https ://ideone.com/1syge8

更好的解决方案仍然是使用周围 HTML 的结构来仅提取特定的跨度;大多数现代网站都使用 CSS 选择器进行格式化,这对于抓取也非常有用。但是由于我们看不到您提取此字符串的原始页面,因此这完全是推测性的。

于 2020-08-23T15:18:28.517 回答
0


import re

input = 'StevensJohn:-:\nWasouskiMike:-:\nTimebombTime:-:\n'

class Names:
    def __init__(self, input, delimiter=':-:\n'):
        self.names = [ x for x in re.split(delimiter, input) if x ]
        self.diffrent_names = set(self.names)

    def number_of_names(self):
        return len(self.names)

    def number_of_diffrent_names(self):
        return len(self.diffrent_names)

    def __str__(self):
        return str(self.names)

names = Names(input)
print(names)
print(names.number_of_names())
print(names.number_of_diffrent_names())
于 2020-08-22T18:13:56.823 回答
0
unicode_ex = 'StevensJohn:-:\nWasouskiMike:-:\nTimebombTime:-:\n'
splitted = [name.replace(" ", "") for name in unicode_ex.split(":-:\n") if name]
print(splitted)

输出

['StevensJohn', 'WasouskiMike', 'TimebombTime']
于 2020-08-22T18:15:59.763 回答