Python:将值拆分为两个并分配到两个不同的变量中

时间:2016-01-12 09:26:14

标签: python python-3.x split iterable-unpacking

我正在尝试从具有开始和结束日期范围的文件中获取字符串,如下所示:

"Date Range = January 1, 2001 to December 24, 2008"

我必须选择此日期范围(2001年1月1日至2008年12月24日)并将其拆分并将其分配到2个不同的变量中。我可以获取日期范围并拆分它们,但在分配时我收到错误。

file_path = open("C:\\Users\\vinnu\\Desktop\\ARF_LS00006493_339313_Tremont.txt")
content = file_path.read()

#find and pick the date range
size = len(content)
start =0
while start < size:
    start = content.find("Date Range: ",start)
    start = start if start != -1 else size
    #fetch only till the end of line
    end = content.find("\n", start)
    end = end if end != -1 else size
    date_range = (content[start+12:end])
    start = end + 1
    #printing test
    print (date_range)

    #split
    date1,date2= date_range.split(' to ')
    print (date1)
    print (date2)

我得到以下输出并出现错误:

January 1, 2001 to December 24, 2008
January 1, 2001
December 24, 2008

Traceback (most recent call last):
  File "C:/Users/vinnu/Desktop/split_eg3.py", line 19, in <module>
    date1,date2= date_range.split(' to ')
ValueError: not enough values to unpack (expected 2, got 1)

2 个答案:

答案 0 :(得分:0)

我不会为此使用循环,您可以在整个过程中使用split:

Content-Type

然后在阅读文件时使用该功能:

content_type

答案 1 :(得分:0)

我会尝试解释你得到的输出

第一次在循环中,一切都很好......

January 1, 2001 to December 24, 2008
January 1, 2001
December 24, 2008

现在你再次进入循环(很可能你在文件末尾有一些\ n \ n)

start = content.find("Date Range: ",start)
start = start if start != -1 else size

开始应该&#34;尺寸&#34;现在

date_range = (content[start+12:end]) # start==size remember? => ""
start = end + 1
#printing test
print (date_range) #you print an empty string here!

打印空行后

date1,date2= date_range.split(' to ') #splitting the empty string

并爆炸:

Traceback (most recent call last):
  File "C:/Users/vinnu/Desktop/split_eg3.py", line 19, in <module>
    date1,date2= date_range.split(' to ')
ValueError: not enough values to unpack (expected 2, got 1)