Как получить функцию, которая возвращает только список, который соответствует определенной строке? - PullRequest
0 голосов
/ 03 сентября 2018

У меня следующая проблема; У меня есть кортеж с именем split_content:

(['@Book{Clark2003,',
  'author ,   {Eve Clark},',
  'title ,    {First Language Acquisition},',
  'publisher ,    {Cambridge University Press},',
  'address , {Cambridge, UK},',
  'year ,     2003}',
  'volume ,  10}}'],
 ['',
  '@techreport{arrow1948,',
  'author , {Arrow, Kenneth J.},',
  'title , {The possibility of a universal social welfare        function},',
  'institution , {RAND Corporation},',
  'year , {1948},',
  'number , {P-41},',
  'type , {Report}'])

, который, как вы можете видеть, уже разбит на два подсписка (до [",'@techreport).
Мне нужно иметь возможность взять строку (intext2) и найти совпадение в любом из этих двух списков. Например. if intext2[0] = 'Clark'. Я хочу, чтобы он возвращал только первый подсписок, то есть тот, который заканчивается на 'volume, 10}}'].

Теперь я написал этот код для достижения этой цели, но он не работает постоянно:

def split_file():
    split_content = split_up()
    intext= u_input[u_input.find("(")+1:u_input.find(")")]
    intext2 = re.split('(\d+)',intext) 
    global split_content_fin
    if [intext2[0] in split_content[0]]:
        split_content_fin = split_content[0]
   
    if [intext2[0] in split_content[1]]:
        split_content_fin = split_content[1]
       
    return split_content_fin

Часто он возвращает только вторую подстроку, хотя нет совпадения с intext2[0]. Я уже пробовал списки вместо [intext2[0] в split_content[0/1]], но безрезультатно. Тем не менее, я чувствую, что проблема заключается именно там, однако я не могу найти решение. Или это связано с тем, что это кортеж?

1 Ответ

0 голосов
/ 08 июля 2019

Как то так?

split_content = (['@Book{Clark2003,',
  'author ,   {Eve Clark},',
  'title ,    {First Language Acquisition},',
  'publisher ,    {Cambridge University Press},',
  'address , {Cambridge, UK},',
  'year ,     2003}',
  'volume ,  10}}'],
 ['',
  '@techreport{arrow1948,',
  'author , {Arrow, Kenneth J.},',
  'title , {The possibility of a universal social welfare        function},',
  'institution , {RAND Corporation},',
  'year , {1948},',
  'number , {P-41},',
  'type , {Report}'])


asString_1 = ','.join(map(str,split_content[0]))
asString_2 = ','.join(map(str,split_content[1]))
aWord = 'Clark'

if(aWord in asString_1):
    print("in the first element")
elif(aWord in asString_2):
    print("in the second element")
#elif(...)
#   ...
...