Python 如何根据第二个文件对一个csv文件进行排序?

Python 如何根据第二个文件对一个csv文件进行排序?,python,csv,awk,Python,Csv,Awk,我有两个文件 F1 F2 我想根据F1对F2进行排序,F2中的每一行,如果第一个元素在F1中不存在,应该添加到结果列表的末尾。因此,我得到: "bar","spam","orange" "bar","orange","blue" "foo","apple","green" "foo","blue","apple" "egg","apple","green" "egg","orange","red" "egg","apple","green" "bacon","red","orange" "spa

我有两个文件

F1

F2

我想根据F1对F2进行排序,F2中的每一行,如果第一个元素在F1中不存在,应该添加到结果列表的末尾。因此,我得到:

"bar","spam","orange"
"bar","orange","blue"
"foo","apple","green"
"foo","blue","apple"
"egg","apple","green"
"egg","orange","red"
"egg","apple","green"
"bacon","red","orange"
"spam","apple","yellow"
"spam","green","egg"

我想要一个蟒蛇3的解决方案。但我也愿意在awk中寻求解决方案。

请尝试以下内容,并让我知道这是否对您有帮助。假设您希望将F2文件的第一个字段的第一个字段与F1文件的第一个字段进行匹配,根据显示的示例,F1文件的第一个字段本身只有一个字段

awk -F'"' '
FNR==NR{
  a[$2]=(a[$2]?a[$2] ORS:"")$0;
  b[$2];
  next
}
($0 in b){
  print a[$0];
  c[$0]
}
END{
  for(i in a){
    if(!(i in c)){ print a[i] }
}}' F2  F1
输出:


类似sortedthe_列表,key=lambda x:intx不在其他_列表中。到目前为止,您尝试了什么?如果您展示您的解决方案会很好。F1中没有F2行。你是说元素?是的元素,修复了它
"bar","spam","orange"
"bar","orange","blue"
"foo","apple","green"
"foo","blue","apple"
"egg","apple","green"
"egg","orange","red"
"egg","apple","green"
"bacon","red","orange"
"spam","apple","yellow"
"spam","green","egg"
awk -F'"' '
FNR==NR{
  a[$2]=(a[$2]?a[$2] ORS:"")$0;
  b[$2];
  next
}
($0 in b){
  print a[$0];
  c[$0]
}
END{
  for(i in a){
    if(!(i in c)){ print a[i] }
}}' F2  F1
list1=['bar','foo','egg']

list2=[["egg","apple","green"],
    ["egg","orange","red"],
    ["egg","apple","green"],
    ["bar","spam","orange"],
    ["bar","orange","blue"],
    ["bacon","red","orange"],
    ["foo","apple","green"],
    ["foo","blue","apple"],
    ["spam","apple","yellow"],
    ["spam","green","egg"]]

list_to_sort=[]
list_not_to_sort=[]
for element in list2:
    if(element[0].split(',')[0] in list1):
        list_to_sort.append(element)
    else:
        not_to_sort.append(element)
list_to_sort.sort()
print(list_to_sort+not_to_sort)
[['bar', 'orange', 'blue'],
 ['bar', 'spam', 'orange'],
 ['egg', 'apple', 'green'],
 ['egg', 'apple', 'green'],
 ['egg', 'orange', 'red'],
 ['foo', 'apple', 'green'],
 ['foo', 'blue', 'apple'],
 ['bacon', 'red', 'orange'],
 ['spam', 'apple', 'yellow'],
 ['spam', 'green', 'egg']]