如何在Python中将具有名称(1个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?

Posted

技术标签:

【中文标题】如何在Python中将具有名称(1个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?【英文标题】:How to split a single line input string having Name(1 or more words) and Number into ["Name" , "Number"] in Python? 【发布时间】:2021-07-19 00:03:45 【问题描述】:

我是新手。我在电话簿问题中的一个测试用例失败了。根据问题,用户应该输入一个单行输入,其中包含一个名称(可以是一个或多个单词),后跟一个数字。我必须将输入拆分为 ["name","number"] 并将其存储在字典中。请注意,名称将包含一个或多个单词(例如:John Conor Jr. 或 Apollo Creed)。我对拆分部分感到困惑。我尝试了 split() 函数和 re.split()。不确定我能解决这个问题。

示例输入 1:david james 93930000

示例输入 2:hshhs kskssk sshs 99383000

输出:num = “大卫詹姆斯”:“93930000”,“hshhs kskssk sshs”:“99383000”

我需要将它存储在 key:value 为 "david james": "93930000" 的字典中

请帮忙。谢谢

=====>我找到了解决办法

if __name__ == '__main__':
    N=int(input())
    phonebook=
    (*name,num) = input().split()
    name = ''.join(map(str,name)
    phonebook.update(name:num)
print(phonebook)

astrik 方法词。但是对于大型数据集,这可能会减慢我的速度。不确定。

【问题讨论】:

输入 2 的可能键:值是什么? 我不确定你的意思。我是python的新手。我再次改写了这个问题。如果您有解决方案,请告诉我。 @VR Babu 请在下面查看我的答案 【参考方案1】:

所以我假设所说的输入来自用户,如果那样的话 是否可以将代码中的格式更改为某些内容 与此类似。您可以根据需要多少输入来更改范围。

name = 

for i in range(5):
    student_name = input("Enter student's name: ")
    student_mark = input("Enter student's mark: ")
    name[student_name.title()] = student_mark

print(marks)

这应该以您提到的方式打印结果!

【讨论】:

一句话就搞定了。不是来自不同行的用户。 那么在这种情况下,他可以将信息附加到一个列表中,然后在上面的函数中循环它。应该得出相同的结果。他能否详细说明他是如何获取输入数据的? 我在一行中获取输入信息(根据黑客等级问题)。输入包括一个人名(可以是一个或多个单词),后跟他的单行号码。所以我希望将输入拆分为 ["name" , "number"] 并将其存储在字典中。我在拆分部分面临困难。我无法为此使用常规的 split() 函数。 请我发布了一个新答案,如果您需要的话,请告诉我。如果这回答了您的问题,如果您将其作为答案,将不胜感激。谢谢!【参考方案2】:

如果这是您要查找的内容,请检查更新后的答案 为。

# Sample text in a line...
# With a name surname and number

txt = "Tamer Jar 9000"

# We define a dictionary variable
name_dictionary = 

# We make a list inorder to appened the name and surname to the list
name_with_surname = []

# We split the text and if we print it out it should look something like this
# "Tamer", "Jar", "9000"
# But you need the name and surname together so we do that below
x = txt.split()

# We take the first value of the split text which is "Tamer"
# And we take the second value of the split text us "Jar"
name = x[0]
surname = x[1]
# And here we append them to our list 
name_with_surname.append(name + " " + surname)
#print(name_with_surname)


# Finally here to display the values in a dictionary format
# We take the value of the list which is "Tamer Jar" and the value of the number "9000"
name_dictionary[name_with_surname[0]] = x[2]
print(name_dictionary)

【讨论】:

嘿。感谢您花时间给我一个详细的解释。但是,如果名字只有一个“Tamer”甚至三个“Tamer Jar Jr.”呢?如果我没记错,上面的代码索引会产生错误。我正在寻找一个更通用的代码,其中可以提取“名称”(可能是一个或多个单词)和数字并将其作为键:值放置在 dict() 中。 嘿,我想出了一个答案。不确定是否正确。【参考方案3】:

如果数据在一行中有太多名称部分,则上述答案无法处理。 在下面试试我的代码。 您可以遍历任何您想要的输入总数。

phonebook = 
total_inputs = int(input())
for i in range(total_inputs):
    name_marks = input().split() # taking input and splitting them by spaces
    name = " ".join(x for x in name_marks[:-1]) # extracting the name
    marks = name_marks[-1] # extracting the marks
    phonebook[name] = marks # storing the marks in the dictionary

这样您可以存储名称的标记。它甚至可以处理一个包含多个名称部分的输入。

【讨论】:

以上是关于如何在Python中将具有名称(1个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将多个变量附加到列表中

如何在Laravel中将2个或更多用户角色分配给1个路由?

如何使用 grep 命令获取连续有六个或更多辅音的单词列表?

如何在 C# 中缓存具有多个键的对象

NSPredicate 用于获取具有特定课程名称的所有学生?

如何将一列中的单词拆分然后在Python中将单词整合在一起,即二维列表到一维列表?