取得一个列表并将其转换为字符串列表?

时间:2018-10-23 14:21:06

标签: python

标题很难理解,但这基本上就是我想要做的。我正在尝试制作一些像这样的变量列表:

bad URI(is not URI?): file-digest:///Volumes/Internal HDD/Dropbox/ClientName/Apps/Project Folder Name/project-name/app/assets/config

并将其转换为以下内容:

 no beta stupid motorbike yes big_boom

最终目标是搜索此变量列表,并找到相互冲突的变量。例如:

 list = ['no', 'beta', 'stupid', 'motorbike', 'yes', 'big_boom']

另一个例子,更多地看到了它的作用:

if exist 'yes' and 'no' in list:
    fail
else:
    pass

这确实很复杂,但我感谢任何帮助!

问题或评论:

https://docs.google.com/document/d/1tRHFHr8bp6_E31lhgYBKrwWb-2qscHoUWb6lVLlY4cc/edit?usp=sharing

5 个答案:

答案 0 :(得分:1)

import inspect

# these are your variables
no = 10
beta = 20
stupid = 30
motorbike = 40
yes = 50
big_boom = 60

# this is your list of variables
list1 = [no, beta, stupid, motorbike, yes, big_boom]

# this function takes in a variable name and returns it as a string
def retrieve_name(var):
    callers_local_vars = inspect.currentframe().f_back.f_locals.items()
    return [var_name for var_name, var_val in callers_local_vars if var_val is var][0]

# call retrieve_name() function for each element in list1
list_of_variables = list(map(retrieve_name, list1))

print(list_of_variables)

这将打印:

['no', 'beta', 'stupid', 'motorbike', 'yes', 'big_boom']

答案 1 :(得分:0)

只需使用all检查您要显示在列表中的所有项目。如果是这样,列表理解将是最简单的方法,它可以将您不想删除的项目返回给您的新列表,并最终通过加入这些项目来打印您的字符串。

li = ['no', 'beta', 'stupid', 'motorbike', 'yes', 'big_boom']
items = ['yes','no'] #items you want in the list before anything happens

if all(item in li for item in items):
    new_li = [i for i in li if i != 'no'] #remove the item you do not need

print(' '.join(new_li)) #print the string output

答案 2 :(得分:0)

几乎逐步执行伪代码,使用.split()创建列表,然后使用列表推导创建final_lst' '.join()将其拼凑在一起。

注意:您设计的代码的功能在很大程度上取决于以下事实:您的输入满足创建变量的if要求,如果设计的代码失败,由于ifmy_var之类的变量不会被初始化,因此final_lst语句未触发。

s = 'no beta stupid motorbike yes big_boom'

if 'yes' in s and 'no' in s:
    my_var = 1

lst = s.split()

if my_var == 1:
    final_lst = [i for i in lst if i != 'no']

res = ' '.join(final_lst)
print(res)
# beta stupid motorbike yes big_boom

答案 3 :(得分:-1)

这是一个简单的示例,说明如何读取txt,将其拆分为列表,验证其中的元素并过滤出元素:

def filter_list(lst: list, exclude: list):
    """filter a list by excluding elements"""
    return list(filter(lambda x: x in exclude, lst))

txt = 'no beta stupid motorbike yes big_boom'
lst = text.split(' ') # Split on the spacing

myVar = 0    
if ('yes' in lst) and ('no' in lst):
    myVar = 1

if myVar:
    filtered_lst = filter_list(lst, ['excluded word 1', 'excluded word 2'])
    print(' '.join(filtered_lst))

答案 4 :(得分:-1)

对于您的第一个示例,我将使用此逻辑。

is_in

string.split()的声明使您可以列出要在列表中找到的内容,然后提供该列表。 A list将其转换为class alpha::params { $x = "aaa" $y = "bbb" }