文件内容为一个多层元组,遍历该元组,当全为数字时输出数字之和,全为字母输出字符串,
有数字有字母输出False,并将该内容写入到该文件的下一行中
# 方法一:
t1= ((1,2,3),("a","b","c"),("a",1,2))
import pickle
with open(‘D:\\a.txt‘, ‘wb‘) as f:
pickle.dump(t1,f)
with open(‘D:\\a.txt‘, ‘rb‘) as f1:
content = pickle.load(f1) # 用这个方法一参数的形式写入,然后读出来也是参数
tup = tuple(content)
result = []
def func(tup):
for i in tup:
if isinstance(i, tuple):
func(i)
else:
result.append(i)
list1 = list(filter(lambda x:type(x)==int, result))
list2 = list(filter(lambda x:type(x)==str, result))
if len(result) == len(list1):
print(True)
elif len(result) == len(list2):
print(False)
else:
with open(‘D:\\a.txt‘, ‘a‘, encoding=‘utf-8‘) as f1:
f1.write(str(result))
# 方法2
#分别定义判断元组元素是否全部是数字、字母的函数
import string
def all_digit(arr):
for v in arr:
if not isinstance(v,int):
return False
return True
def all_letter(arr):
for v in arr:
if str(v) not in string.ascii_letters:
return False
return True
#读出文件内容并用eval函数获得原始元组
with open("e:\\python\\a.txt") as file_obj:
content = file_obj.readline()
content = eval(content) # 通过这个方法把读取的到的内容转换为元祖
#遍历元组中的元组,如果都是数字直接求和,并加入结果列表
#如果都是字母拼接成字符串后加入结果列表
#如果都不是False加入结果列表
result = []
for item in content:
if all_digit(item):#("a",1,2)返回False
result.append(sum(item))
elif all_letter(item):#("a",1,2)返回False
result.append("".join(item))
else:
result.append(False)
# print(result)
with open("e:\\python\\a.txt","a+") as file_obj:
file_obj.write("\n" + str(tuple(result)))
file_obj.seek(0,0)
print(file_obj.read())
原文:https://www.cnblogs.com/su-sir/p/11809282.html