У меня есть список уличных адресов, некоторые из которых имеют поля. Я хочу удалить все, что не является полем po из строки, если оно содержит поле po. Например, если есть список ['123 any drive', '234 any lane po box 3213', 'po box 190 441 bettername street'], это должно возвращать ['123 любой диск', 'поле box 3213', ' 'po box 190']. Все, что я до сих пор
def listofaddr(lst)):
boxes = ('po box ', 'p o box ')
finstring = []
for i in lst:
if boxes in i:
i = 'po box ' +
finstring.append(i)
То, что я думаю, что я могу сделать, это использовать пробел после "окна" в качестве разделителя, захватить следующую подстроку чисел после пробела и использовать следующее пространство в качестве разделителя для завершения строки, но я не могу придумать, как это сделать этот.
Это должно работать:
a=['123 whatever drive', '234 anywhere lane po box 3213', 'po box 190 441 bettername street']
["po box "+e.split("po box ")[1].split(" ")[0] if "po box" in e else e for e in a]
Выход:
['123 whatever drive', 'po box 3213', 'po box 190']
Вы можете использовать регулярное выражение, которое легко проверить здесь: https://pythex.org/
import re
firstList = ['123 whatever drive', '234 anywhere lane po box 3213', 'po box 190 441 bettername street']
outputList = [re.search('[0-9]+', x)[0] if 'po box' in x else x for x in firstList]
Вывод:
['123 whatever drive', 'po box 3213', 'po box 190']
['123 whatever drive', 'po box 3213', 'po box 190']
не совпадает с ['123 whatever drive', 'po box 3213', 'po box 190 441']
Использование списка:
addrs = ['123 whatever drive', '234 anywhere lane po box 3213', 'po box 190 441 bettername street']
boxes = [(a[a.index('po box'):] if ('po box' in a) else a) for a in addrs]
Я использую простую строковую строчку здесь: если строка 'po box'
существует в любом адресе a
, отрежьте часть строки до этой точки. В противном случае просто верните адрес a
и сделайте это для всех адресов a
в addrs
.
Если вы хотите получить более конкретную информацию, вы можете изучить использование регулярных выражений вместо нарезки строк.
['123 whatever drive', 'po box 3213', 'po box 190 441 bettername street']
не является ['123 whatever drive', 'po box 3213', 'po box 190']
e
иa
?a
это список ввода.e
является переменной цикла