首先,对不起标题,但是我真的不知道如何将这个问题放在一行中,但是由于它是循环问题,所以我提到了同样的问题。我一直在试图弄清楚如何进行这项工作,但如果能够解决其他问题,一切都会徒劳。
我想先从文件中读取,然后以这种方式打印。 (我在解释时会使用+
而不是单词concatenation
第一行我希望是input
+ myfile.txt
的第一行 + some_string
,因为我们正在使用{我在代码中的{1}}中已在j
和""
(此行基本上是所有内容)中添加了num
(这没什么意思)
第二行我希望它是chars
+ input
+ 2
的{{1}} + myfile.txt
+ 第一行
第三行,我希望它是2
+ some_string
+ input
<的第一行中的3
< / p>
(真正的问题在此之后开始)
现在从第四行开始,我也想迭代myfile.txt
数组,这是对我造成问题的一个。
第四行,我希望它是3
+ some_string
(来自chars
数组)的input
+ 第一行 + {{ 1}}(这一行基本上是将类似于第一行的所有内容连接在一起,但是使用myfile.txt
中的ab
)
我希望它是chars
+ some_string
+ ab
+ chars
+ input
的第一行
+ 2
第六行我希望是myfile.txt
+ 2
+ ab
的{{1}} + some_string
+ 第一行
+ input
我希望它是3
的第七行+ myfile.txt
+ 3
+ ab
第八行我希望是some_string
+ input
+ myfile.txt
的{{1}} + bc
+ 第一行
+ some_string
我希望第九行是input
+ 2
+ myfile.txt
的{{1}} + 2
+ 第一行
+ bc
然后它将对整个char数组(some_string
,input
,3
)继续执行操作,然后在第二行中执行完全相同的操作{of myfile.txt
面临的问题是3
数组和bc
数组不相等(不具有相同的索引),所以当我在some_string
中进行迭代时,每当我修复一个时,它都会弄乱一切事情对我来说又是一团糟。我已尽我所能来解决此问题,但未能做到。如果我错过解释的任何事情,请告诉我。
cd
编辑:
有人指出,我也应该在这里显示预期的输出。
de
myfile.txt的内容
ef
答案 0 :(得分:0)
您可以从itertools用python循环替换num,然后在其上调用next。
例如创建您的周期
import itertools
num=itertools.cycle(["","2","3"])
然后在循环内调用下一个而不是建立索引
next(num)
编辑: 问题编辑使其更加清晰。 您可以使用嵌套的for循环使其更简单。
for c in chars:
for n in num:
print(input + i.rstrip() + n + c + some_string)
答案 1 :(得分:0)
要理解您对问题的描述并不容易,但是我认为您正在尝试这样做:
chars
中的每个值,
num
的每个值,
由于存在三层重复,因此自然的解决方案是使用三个循环。如果在列表的开头放置一个空字符串,将简化chars
上的循环:
num = ["", "2", "3"]
# added empty string here
chars = ["", "ab", "bc", "cd", "de", "ef"]
some_string = "some_string"
input_string = str(input("input that we would get"))
with open("myfile.txt", "r") as myfile:
for file_line in myfile:
file_line = file_line.rstrip()
for c in chars:
for n in num:
print(input_string + n + file_line + n + c + some_string)
请注意,我已将您的input
变量重命名,以避免覆盖内置的input
函数。我还按值遍历了这些列表,这比按索引进行遍历更简单,更简洁。并且我已经将rstrip()
移到了外部循环,因此每行只需要剥离一次。
如果您不希望有太多的嵌套循环,则可以使用itertools.product使用一个循环编写等效版本:
import itertools
num = ["", "2", "3"]
chars = ["", "ab", "bc", "cd", "de", "ef"]
some_string = "some_string"
input_string = str(input("input that we would get"))
with open("myfile.txt", "r") as myfile:
myfile = ( s.rstrip() for s in myfile )
for file_line, c, n in itertools.product(myfile, chars, num):
print(input_string + n + file_line + n + c + some_string)
答案 2 :(得分:0)
此实现不使用数字索引:
num = ["", "2", "3"]
chars = ["", "ab", "bc", "cd", "de", "ef"]
num_chars_variations=[(n, c) for c in chars for n in num]
some_string = "some_string"
input = str(input("input that we would get"))
with open("24_st.txt", "r") as myfile:
for line in myfile:
for variation in num_chars_variations:
n, c = variation
n1 = n if c != "" else ""
print(input + n + line.strip() + n1 + c + some_string)
答案 3 :(得分:-1)
这里要使用的工具是模运算符和整数除法运算符。也许是这样的:
print(input + i.rstrip() + num[j%3] + chars[j//3] + some_string)