如何将控制台的输入行读取到多个值的列表中?

How to read input line from console into list of multiple values?

提问人: 提问时间:1/7/2023 最后编辑:hc_dev 更新时间:1/7/2023 访问量:141

问:

法典

我想输入多个值(见下面的注释行), 因此,用户可以轻松搜索多个值,并且循环可以找到这些值。

如何将输入更改为文本列表,以便程序检查所有内容? 像这样:每行 1 个怎么样 - 从 ? 我想我得到的结果是错误的,是帖子 URL 的实际 id。 我想知道在 . 话虽如此,应该给出答案:5 和 9,而不是 5 和 6。what_to_look = ['james','tom'].split()file.txtpost_idfile.txt"james kim"

title = ['james','tom','kim']
post_ids = [5,6,9]
what_to_look = input('Enter Name: ')   # convert this like (what_to_look = ['james','tom'] )

# search for the values
if what_to_look in title:
    position = title.index(what_to_look)
    post_id = post_ids[position]
    print('found', post_id)
else:
    print('not found')

如何将输入转换为列表,例如?('james','kim')

Python 列表 搜索 输入

评论

1赞 RomanPerekhrest 1/7/2023
你想成为一个列表(如果它包含 )?what_to_looktitle
0赞 1/7/2023
是的,兄弟完全正确
0赞 Harshit Gupta 1/7/2023
在输入中,您只需从 STDIN 获得一行。如果您确定要输入和使用的行数,最好输入这些行数(在您的例子中为 2 行)并将输入组合成一个元组。查看 Tuple Comprehension 或 List Comprehension 以获取一些单行语法。以防万一您想要多元素输入,请使用分隔符,例如以空格分隔的输入行,并在您的情况下使用 method 将其转换为单个元素的列表.split()input().split()
0赞 hc_dev 1/7/2023
请阅读如何提问:需要研究。你搜索了吗?在 SO 上找到了答案。
0赞 hc_dev 1/7/2023
这回答了你的问题吗?在 python 中将输入传递到列表中

答:

0赞 Jib 1/7/2023 #1

Python 字符串提供了根据指定的分隔符将其分解为列表的函数。.split

例如,将打破每个空格。names = what_to_look.split(" ")what_to_look

为了进一步参考,这里是文档拆分的链接

1赞 Jishnu 1/7/2023 #2

我认为您想将值列表作为输入,您可以使用以下代码输入它,例如

what_to_look = input().split()

然后,您可以在单行中以空格分隔文本的形式输入值。希望对您有所帮助!

1赞 Kakedis 1/7/2023 #3

你可以通过split()来实现它:

title = ['james','tom','kim']
post_ids = [5,6,9]
what_to_look = input('Enter Name: ') 

您可以将字符串值拆分为一个列表;

entered_list = what_to_look.split()

这将从输入的字符串创建一个列表。

编辑:建议您按照@hc_dev的建议对输入的值使用分隔符。这将创造更好的用户体验并带来更好的搜索结果。

评论

0赞 hc_dev 1/7/2023
最小的完整可验证示例:拆分列表项,然后遍历列表项以查找每个列表项。
1赞 hc_dev 1/7/2023
“拆分字符串值” - 用什么分隔符?输入和输出的简短示例会有所帮助 - 用户也要正确输入名称。input('Enter one or multiple names separated by :')
1赞 Arifa Chan 1/7/2023 #4

使用并迭代拆分的输入,并获取其索引(如果该输入在列表中):split()what_to_looktitle

title = ['james','tom','kim']
post_ids = [5,6,9]

what_to_look = input('Enter Name: ').split()

for name in what_to_look:
    if name in title:
        post_id = post_ids[title.index(name)]
        print('Found', post_id)
    else:
        print('Not found')

输出:

Enter Name: james tom
Found 5
Found 6

Enter Name: tom jerry
Found 5
Not found

评论

1赞 hc_dev 1/7/2023
@LegendCoder 什么是“BRO” - 您还可以按名字称呼人们并感谢他们的帮助。对于“文本列表的输入”,您可以阅读您得到的所有答案 - 考虑投赞成票说“谢谢”。
0赞 Arifa Chan 1/7/2023
@LegendCoder是文本列表。您可以打印它。 无效。如果你想按字符检查所有内容,你可以使用what_to_look['james', 'tom'].split()list(what_to_look)
0赞 Arifa Chan 1/7/2023
对于每行 1 个或从文本文件中读取,您可以在新问题中提出您想要实现的信息的详细信息。
0赞 Arifa Chan 1/7/2023
@LegendCoder已修复...你可以试试 James Kim = 5, 9
1赞 hc_dev 1/7/2023
@LegendCoder 请参观并阅读如何提问。不要在这里用评论来澄清,而是编辑您的问题并将它们添加到那里(就像我刚刚所做的那样)。每个帖子一个问题,先研究。在另一个问题中提出输入。file.txt
1赞 hc_dev 1/7/2023 #5

以下是 IdeOne 上的演示,可以尝试

titles = ['james','tom','kim']
locations = [5,6,9]

find_str = input('Find Names (separated by space): ') 
terms = find_str.split()   # split entered string by delimiter space into a list

print('Searching for terms:', terms)
for t in terms:  # loop through each given name and search it in titles
  if t.lower() in titles:  # compare lower-case, if found inside titles
    i = titles.index(t.lower())  # find position which is index for other list 
    loc = locations[i]  # use found position to get location number or URL
    print("Found given term:", t, "on index:", i, " has location:", loc)

我的输入(用空格分隔的 3 个术语):

James t. kirk

控制台输出(包括输入的行):

Find Names (separated by space): James t. kirk
Searching for terms: ['James', 't.', 'kirk']
Found given term: James on index: 0  has location: 5