有一個data.txt文本檔案,格式如下(文本檔案長度可以是任意長度):
Start 111 139
A 122 155
B 133 217
C 144 223
Finish
每個值之間的分隔符是一個制表符 (\t),行以回車符 (\n) 結束。我想將每個值放入具有正確型別的單獨變數中(int 表示數字,string 表示文本)。文本檔案的長度可以是任意長度(D、E、F……可以有不同數字的行)。在最后一行總是有一個詞:“完成”。對于上面的示例,我想總共獲得 5 個字串變數和 8 個 int 變數。理想的輸出如下:
str1 = str('Start')
int1 = int(111)
int2 = int(139)
str2 = str('A')
int3 = int(122)
int4 = int(155)
str3 = str('B')
int5 = int(133)
int6 = int(217)
str4 = str('C')
int7 = int(144)
int8 = int(223)
str5 = str('Finish')
變數的名稱可以是任何名稱,如果您的方法已經定義了變數的型別,則不需要強制轉換。
對于部分閱讀,我嘗試了這個:
with open('data.txt') as file:
lines = [line.rstrip().split('\t') for line in file]
print(lines)
But it gives me lists of threes, however, I would like to create separate variables for each value dynamically. Thank you for your help in advance!
uj5u.com熱心網友回復:
你的例子沒有真正的意義。但是,如果這是您正在尋找的:
def conv(s):
try:
return ('int', int(s))
except ValueError:
return ('str', f"'{s}'")
cnt={}
with open('/tmp/file') as f:
for line in f:
for s in line.split():
t=conv(s)
cnt[t[0]]=cnt.get(t[0], 0) 1
print(f'{t[0]}{cnt[t[0]]} = {t[0]}({t[1]})')
印刷:
str1 = str('Start')
int1 = int(111)
int2 = int(139)
str2 = str('A')
int3 = int(122)
int4 = int(155)
str3 = str('B')
int5 = int(133)
int6 = int(217)
str4 = str('C')
int7 = int(144)
int8 = int(223)
str5 = str('Finish')
不要試圖用這些來制造變數!相反,使用dict這樣的:
def conv(s):
try:
return ('int', int(s))
except ValueError:
return ('str', f"'{s}'")
cnt={}
data={}
with open('/tmp/file') as f:
for line in f:
for s in line.split():
t=conv(s)
cnt[t[0]]=cnt.get(t[0], 0) 1
data[f'{t[0]}{cnt[t[0]]}'] = t[1]
>>> data
{'str1': "'Start'", 'int1': 111, 'int2': 139, 'str2': "'A'", 'int3': 122, 'int4': 155, 'str3': "'B'", 'int5': 133, 'int6': 217, 'str4': "'C'", 'int7': 144, 'int8': 223, 'str5': "'Finish'"}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/452189.html
標籤:python variables input text integer
上一篇:JS鬧鐘需要調整
