Python : 将一个值一分为二并分配给两个不同的变量
Python : Splitting a value into two and assigning into two different variable
我正在尝试从具有如下开始和结束日期范围的文件中获取字符串:
"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)
我不会为此使用循环,您可以在整个过程中使用拆分:
def parseDates(s):
_, dates = s.split(" = ")
initDate, endDate = dates.split(" to ")
return (initDate, endDate)
然后在读取文件时使用函数:
with open("yourFileName", "r") as f:
for line in f.readlines():
id, ed = parseDates(line)
print(id)
print(ed)
我将尝试解释您得到的输出
第一次进入循环,一切都很好...
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
现在应该"size"开始
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)
我正在尝试从具有如下开始和结束日期范围的文件中获取字符串:
"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)
我不会为此使用循环,您可以在整个过程中使用拆分:
def parseDates(s):
_, dates = s.split(" = ")
initDate, endDate = dates.split(" to ")
return (initDate, endDate)
然后在读取文件时使用函数:
with open("yourFileName", "r") as f:
for line in f.readlines():
id, ed = parseDates(line)
print(id)
print(ed)
我将尝试解释您得到的输出
第一次进入循环,一切都很好...
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
现在应该"size"开始
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)