【问题标题】:Adding a number at the beginning of a string在字符串的开头添加一个数字
【发布时间】:2019-01-10 17:32:11
【问题描述】:

我正在尝试从一行中读取字符串并在每个字符串的开头添加一个数字并将每个添加到一个数组中,但是我的代码将一个数字添加到字符串的每个字符。

infile = open("milkin.txt","r").readlines()
outfile = open("milkout.txt","w")

number = infile[0]
arrayLoc = infile[1].split( )
array = infile[2].split( )

for i in infile[2]:
    counter = 1
    countered = str(counter)
    i = countered + i
    array.append(i)

output:
['2234567', '3222222', '4333333', '5444444', '6555555', '11', '12', '13', '14', '15', '16', '17', '1 ', '12' .... etc

intended output:
['12234567', '23222222', '34333333', '45444444', '56555555']

infile:
5
1 3 4 5 2
2234567 3222222 4333333 5444444 6555555

【问题讨论】:

  • Python 中没有这样的字符。任何字符都是一个字符的字符串。你的问题没有意义。请澄清(也许通过例子)你期望和你得到什么。
  • 感谢您的建议。我已经澄清了问题,并提供了我需要的示例。
  • 你循环错了。 for i in infile[2]: 应该是 for i in array: - 当然,一旦您进行了更改,array.append(i) 将没有任何意义。完全忘记循环,而是这样做:array = [str(i) + x for i, x in enumerate(infile[2].split(),1)]
  • 如果提供的答案有帮助,请将其标记为已接受。

标签: python arrays loops split io


【解决方案1】:

您需要遍历从文件中读取的array,因为看起来您想为每个元素添加序号,您可以使用enumerate(array) 在循环时获取每个元素的索引.您可以向enumerate 添加一个参数来告诉它从哪个数字开始(默认为0):

new_arr = []
for i, a in enumerate(array, 1):
    # 'i' will go from 1, 2, ... (n + 1) where 'n' is number of elements in 'array'
    # 'a' will be the ith element of 'array'
    new_arr.append(str(i) + a)
print(new_arr)

['12234567', '23222222', '34333333', '45444444', '56555555']

正如评论中所指出的,这可以使用列表推导更简洁地完成,这是一种更 Pythonic 的循环方式:

new_arr = [str(i) + a for i, a in enumerate(array, 1)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    相关资源
    最近更新 更多