如何在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个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 grep 命令获取连续有六个或更多辅音的单词列表?