美好的一天:)
所以我最近在codeacademy中了解了I / O.它几乎没有教授开放,关闭,读,写等等。
我喜欢在那些编程竞赛中徘徊,网站为您提供挑战,您创建源代码,然后下载输入,最后使用输出上传源代码。 (我说的是Google Jam)
所以这就是重点。
我通常会注意到有3种输入
#
X X X X
然后我们有这种
#
XXXX
最后。
#
X
X
X
X
所以问题是
假设有三个输入文件
输入#1
3
A B C D
输入#2
3
ABCD
输入#3
3
A
B
C
D
对于每个输入,如何处理它,以便我的翻译将打印此
3
[A,B,C,D] # As you can see, the interpreter prints the ABCD as a list.
再说一句话(对不起,如果我的选择不好,我只是尽量让它变得清晰):让我们说你输入#1,你如何用python处理它,这样你就可以得到上述内容结果打印在解释器中,依此类推输入#2和输入#3
PS:如果你简短解释,我会很高兴的。 PPS:因为我只是从codeacademy了解I / O的东西,所以我希望你使用open(fileinput,“r”)来获取输入而不是import fileinput。 PPPS:非常感谢您回答这个问题。答案 0 :(得分:0)
#1
l=list(open('myfile.txt').read())
print(l)
#2
l=open('myfile.txt').read().split(' ')
print(l)
#3
l=open('myfile.txt').read().split('\n')
print(l)
解释:list(s)
将一个字符串中的所有字符拆分为一个字符列表。
s.split(' ')
将输入分成列表,每当遇到空格时将其分解为新元素。 s.split('\n')
如果您希望输出A B C D
使用print(' '.join(l))
而不是print(l)
。查看文档以获取str.join
根据OP的要求,进行修改。
for i in l:
if i.isdigit():
print(i)
else:
print(i,end=' ')
答案 1 :(得分:0)
您可以通过将1传递给file.read
函数()来从文件中读取一个字节/字符。所以你可以写这样的代码:
f = open("test.txt")
ch = f.read(1) # Read the first character
number = None # Some variable use to holding the number
l =[] # Some list to store letters ('A', 'B', ...)
token = ""
while ch: # This will loop until ch get empty or EOF.
if ch.isdigit() or ch.isalpha(): # If readed character is a number, or letter
token += ch
else: # We just hit a space, tab, ect..
if token[-1].isdigit():
number = int(token) # OF course you can find things like '3BGFN5', that aren't numbers. But your
# files will don't have input like that, right?
else:
l.append(token)
token = ""
# We don't care about others types of characters.
# Just read the next.
ch = f.read(1)
print(number)
print(l)
此代码使用的格式与您发布的格式和其他组合一样,例如,包含
的文件3
ABC ZXY
D E F
G
H
I
将输出
3
['ABC', 'ZXY', 'D', 'E', 'F', 'G', 'H']
答案 2 :(得分:0)
好的,我将向您介绍如何将每个输入文件加载到一些有意义的表示中(根据您的要求,这是一个带有整数的变量和带有列表的变量)。
在这三种情况下,我们将打开文件并使用一段代码逐行读取:
with open('input.txt') as f:
line = f.readline()
请注意,line变量包含整行,包括“\ n”结束符。
现在,让我们来看看每个案例。我假设我们要将存储它的数据解析为变量N
(对于整数)和data
列表
<强>#2 强>
让我从第二个开始,这稍微容易一些:
with open('input.txt') as f:
line = f.readline()
#the first line is an integer, which we store into a variable
N = int(line)
line = f.readline()
#We remove the ending "\n" character of the line
line = line.strip('\n')
#The string is already a list of characters
#So it's just a matter of feeding it into a proper list:
data = list(line)
<强>#1 强>
with open('input.txt') as f:
line = f.readline()
#the first line is an integer, which we store into a variable
N = int(line)
line = f.readline()
#The second line is a space-separated list
#We remove the \n character from the end
#and we apply "split" to split the string into a list
#by the spaces
data = line.strip('\n').split(" ")
<强>#3 强>
对于这种情况,我假设您肯定回答了我的问题,整数实际上是列表中的项目数。如果没有,我会相应地改变我的答案。
with open('input.txt') as f:
line = f.readline()
#the first line is an integer, which we store into a variable
N = int(line)
#We create a list to store the data
data = []
#We read items line by line
for i in range(N):
line = f.readline()
line = line.strip('\n')
#We store the data item
data.append(line)