5 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
根據(jù)我對(duì)您的列表內(nèi)容的理解,您可以使用如下內(nèi)容:
businesses = ["C1 count B1", "C2 count B2", "C1 count B3"]
cities = ["C1","C3","C4"]
output = [a for a in businesses if a.split()[0] in cities]
print(output)
假設(shè)空格分隔第一個(gè)列表中每個(gè)項(xiàng)目的組成部分,則會(huì)產(chǎn)生:
['C1 count B1', 'C1 count B3']

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
您錯(cuò)過了內(nèi)部for循環(huán)的縮進(jìn)
for item1 in A:
for item2 in B:
if item1 == item2:
print(item1)
或者您可以使用setif 兩個(gè)列表中的值都是單個(gè)單詞來執(zhí)行此操作
list(set(A).intersection(set(B)))
從你的問題來看,它是列表中單詞的組合
businesses = ["C1 count B1", "C2 count B2", "C1 count B3"]
cities = ["C1","C3","C4"]
for city in cities:
for business in businesses:
if city in business.split():
print(city, business)

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
for local_city in list_of_cities_in_our_district:
for entry in list_of_city_county_business:
if entry's city matches local_city:
print the business name
這是一些偽代碼,應(yīng)該可以完成您想要的操作...我將語義細(xì)節(jié)留給您,用于解析列表的布局等。

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
鑒于所提供的數(shù)據(jù)文件中的數(shù)據(jù)格式不完美,以下代碼可能會(huì)工作得更好。它還有一個(gè)額外的優(yōu)點(diǎn),即按照城市在 cars.txt 文件中出現(xiàn)的順序按城市對(duì)結(jié)果進(jìn)行分組。
with open('Cities.txt', encoding='utf-8') as f: cities = f.read().split('\n')
cities = [x.strip() for x in cities if x]
with open('Businesses.txt', encoding='utf-8') as f: businesses = f.read().split('\n')
businesses = [x for x in businesses if x]
found = 0
for c in cities:
for b in businesses:
if b.startswith(c):
found += 1
print(b)
print(f'Found {found} businesses')

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
完整的解決方案,由于非結(jié)構(gòu)化數(shù)據(jù)需要大量格式化。
with open("Businesses.txt", mode='r') as f:
listBusinesses = f.readlines()
with open("Cities.txt", mode='r') as f:
listCities = f.readlines()
Cities = []
for values in listCities:
if len(values.split('\n')[0]) > 0:
Cities.append(values.split('\n')[0])
CityNames = []
BusinessNames = []
SerialNo = []
for values in listBusinesses:
if len(values.split('\n')[0]) > 0:
vCityNames = values.split('\n')[0][:26].strip()
CityNames.append(vCityNames)
vSerialWithBusiness = values.split('\n')[0][26:].strip()
if len(vSerialWithBusiness.split('\n')[0].split('.')) > 1:
vSerialNo = (vSerialWithBusiness.split('\n')[0].split('.')[0].strip())
SerialNo.append(vSerialNo)
vBusinessNames = (vSerialWithBusiness.split('\n')[0].split('.')[1].strip())
else:
vBusinessNames = (vSerialWithBusiness.split('\n')[0].split('.')[0].strip())
SerialNo.append('Missing')
BusinessNames.append(vBusinessNames)
assert len(CityNames) == len(SerialNo) == len(BusinessNames)
count = 0
for x in range(len(Cities)):
for y in range(len(CityNames)):
if Cities[x] == CityNames[y]:
count = count + 1
print(Cities[x].ljust(27,' ') ,SerialNo[y].ljust(7,' '), BusinessNames[y])
# Total Businesses 3488, matching Cities 345
添加回答
舉報(bào)