簡體   English   中英

python:我如何比較 doc A 和 doc B,如果它在 doc B 中找到匹配的字符串,我該如何打印整行?

[英]python: How do I compare doc A and doc B and if it finds a string that matches in doc B how do I print the entire line?

我有文件A:

['5a0cd3b5-4249-bf6f-d009-17a81532660e', '7e44fc1b-44fa-cdda-8491-f8a5bca1cfa3', 'daa73753-4b56-9d21-d73e-f3b3f4c9b1a6', 'f7425a39-43ca-e1fe-5b2b-56a51ed479c5']

我有文件 B:

abc 5a0cd3b5-4249-bf6f-d009-17a81532660e
def CDA41B87-4D3A-C17C-5F6D-8990CC9C5EFB
ghi Odin 157BCEBE-484D-82E2-2A60-C8B4B11197EA
jkl 72E724E9-4BA4-2D12-CE1A-8DB1A528B9D3
mno 9E648B20-4ED5-1F34-87A9-979CBE9A958A

如果文檔 A 中的 ID 與文檔 B 中的 ID 匹配,您如何打印整行?

示例:文檔 A 中的此 ID '5a0cd3b5-4249-bf6f-d009-17a81532660e' 位於文檔 B 的第一行:'abc 5a0cd3b5-4249-bf6f-d009-17a8153266 (打印第一行)

我試過使用熊貓:

import pandas as pd
df1 = pd.read_csv('shopid.txt', header=None, names=['id'])
df2 = pd.read_csv('skin_database2.txt', header=None, names=['id', 'name'], delim_whitespace=True)

res = df2[df2['name'].isin(df1['id'].unique())]
print(res)

我也試過這個:

response = requests.request("GET", url, headers=headers, data=payload)
    data = response.json()["SkinsPanelLayout"]["SingleItemOffers"]
dataLog = []
with open('skin_database2.txt', 'rt') as f:
    data = f.readlines()
for line in data:
    if line.__contains__(data):
        print(line)
        dataLog.append(line)
print(dataLog)

但我收到此錯誤:

    if line.__contains__(data):
TypeError: 'in <string>' requires string as left operand, not list

有沒有辦法使用列表/變量?

使用輸入:

店鋪編號.txt:

['157BCEBE-484D-82E2-2A60-C8B4B11197EA', '7e44fc1b-44fa-cdda-8491-f8a5bca1cfa3', '65BAA0CD-42EC-F99D-54A0-338D795B5824', 'f7425a39-43ca-e1fe-5b2b-56a51ed479c5']

其他文件.txt:

Glitchpop Odin,97AF88E4-4176-9FA3-4A26-57919443DAB7
dot EXE Odin,5A0CD3B5-4249-BF6F-D009-17A81532660E
Prime//2.0 Odin,157BCEBE-484D-82E2-2A60-C8B4B11197EA
Prism III Odin,72E724E9-4BA4-2D12-CE1A-8DB1A528B9D3
Smite Odin,9E648B20-4ED5-1F34-87A9-979CBE9A958A
Sensation Odin,65BAA0CD-42EC-F99D-54A0-338D795B5824
Lightwave Odin,57523CF0-4574-968B-9F17-168E3BDB6D0D
Standard Odin,F7425A39-43CA-E1FE-5B2B-56A51ED479C5
  • 提到:為了讓熊貓正確讀取行,您需要像我一樣格式化輸入。 (shopid.txt 的每個條目都必須在單獨的行上,而另一個條目的名稱和 ID 必須用 , 分隔)

熊貓解決方案修訂:

import pandas as pd

with open('shopid.txt', 'r') as f:
    in_list_formatted = str(f.read()).replace(
        '[', '').replace(']', '').replace('\'', '').split(',')
    inputs = [i.strip().upper() for i in in_list_formatted]

df1 = pd.DataFrame(inputs, columns=['id'])
df2 = pd.read_csv('skin_database2.txt', header=None, names=[
                  'name', 'id'])

found_list = []
for item in df1['id']:
    found = df2.loc[df2['id'] == item]
    if found.empty:
        continue
    found_list.append(found)
output = pd.concat(found_list, ignore_index=True)
print(output)

輸出:

              name                                    id
0  Prime//2.0 Odin  157BCEBE-484D-82E2-2A60-C8B4B11197EA
1   Sensation Odin  65BAA0CD-42EC-F99D-54A0-338D795B5824
2    Standard Odin  F7425A39-43CA-E1FE-5B2B-56A51ED479C5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM