亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將子字符串與 2 個列表的字符串進行匹配

將子字符串與 2 個列表的字符串進行匹配

繁星coding 2023-08-15 17:26:58
當我遇到問題時,我正在嘗試編寫工作代碼。我的目標是找到位于特定地區的企業。我有兩個清單。第一個列表的項目類似于“城市計數企業名稱”,包含我們縣的所有城市,而第二個列表的項目類似于“城市”,包含我們地區的所有城市。我想比較這些列表,以便獲得我們地區的所有企業,結果如“城市計數企業名稱”。這是我的代碼:jVal = "|".join(A)  print([i for i in B if i in jVal ])我也嘗試過這個:for item1 in A:for item2 in B:    if item1 == item2:        print(item1)但兩者都不起作用,我要么根本沒有得到任何結果,要么得到整個“A”。任何幫助將不勝感激!
查看完整描述

5 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

根據我對您的列表內容的理解,您可以使用如下內容:


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)

假設空格分隔第一個列表中每個項目的組成部分,則會產生:


['C1 count B1', 'C1 count B3']


查看完整回答
反對 回復 2023-08-15
?
www說

TA貢獻1775條經驗 獲得超8個贊

您錯過了內部for循環的縮進


for item1 in A:

  for item2 in B:

    if item1 == item2:

        print(item1)

或者您可以使用setif 兩個列表中的值都是單個單詞來執行此操作


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)


查看完整回答
反對 回復 2023-08-15
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

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

這是一些偽代碼,應該可以完成您想要的操作...我將語義細節留給您,用于解析列表的布局等。


查看完整回答
反對 回復 2023-08-15
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

鑒于所提供的數據文件中的數據格式不完美,以下代碼可能會工作得更好。它還有一個額外的優點,即按照城市在 cars.txt 文件中出現的順序按城市對結果進行分組。


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')


查看完整回答
反對 回復 2023-08-15
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

完整的解決方案,由于非結構化數據需要大量格式化。


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


查看完整回答
反對 回復 2023-08-15
  • 5 回答
  • 0 關注
  • 217 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號