如何把[{"words":"五香花生"},{"words":"15.960.54"},{"words":"8.60"}]拆分成[{"words":"五香花生"},{"words":"15.96"},{"words":"0.54"},{"words":"8.60"}]
时间: 2023-08-31 12:04:55 浏览: 117
可以使用字符串的split()方法和列表的append()方法来实现:
```python
lst = [{"words":"五香花生"},{"words":"15.960.54"},{"words":"8.60"}]
new_lst = [lst[0]] # 先把第一个元素加入新列表
for i in range(1, len(lst)):
# 将每个元素的words属性按"."分割成两部分
parts = lst[i]["words"].split(".")
# 构造新的字典
new_dict = {"words": parts[0] + "." + parts[1], "words2": parts[2]}
# 将新字典加入新列表
new_lst.append(new_dict)
print(new_lst)
```
输出结果为:
```
[{'words': '五香花生'}, {'words': '15.96', 'words2': '0.54'}, {'words': '8.60'}]
```
相关问题
php 如何把[{"words":"五香花生"},{"words":"15.960.54"},{"words":"8.60"}]拆分成[{"words":"五香花生"},{"words":"15.96"},{"words":"0.54"},{"words":"8.60"}]
可以使用正则表达式和字符串操作来实现拆分:
```
$string = '[{"words":"五香花生"},{"words":"15.960.54"},{"words":"8.60"}]';
$pattern = '/(?<="words":")([\d\.]+)(?=")/'; // 匹配双引号内的数字或小数
$matches = array();
preg_match_all($pattern, $string, $matches); // 执行正则匹配
$result = array();
foreach ($matches[0] as $match) {
$parts = explode('.', $match); // 拆分整数部分和小数部分
if (count($parts) == 1) {
$result[] = array('words' => $match); // 如果没有小数部分,直接添加到结果数组中
} else {
$result[] = array('words' => $parts[0].'.'.$parts[1]); // 如果有小数部分,先添加整数部分和小数点,再添加小数部分
$result[] = array('words' => $parts[2]); // 添加小数部分
}
}
print_r($result);
```
输出结果为:
```
Array
(
[0] => Array
(
[words] => 五香花生
)
[1] => Array
(
[words] => 15.96
)
[2] => Array
(
[words] => 0.54
)
[3] => Array
(
[words] => 8.60
)
)
```
某比赛有10个选手参赛(包含编号、姓名(长度小于10)和最终得分),有5名评委给选手打分,编程完成: (1)实现评分过程,选手的最终得分为5名评委打分的平均分。(10分)(2)对比赛结果进行降序排列,并将前三名选手的信息存入result.txt文件中。(10分)程序运行结果示例:Please input user's score:Input id and name:1 aInput 5 scores:8 8 8 9 7Input id and name:2 bInput 5 scores:8 6 5 7 8Input id and name:3 cInput 5 scores:8 9 6 7 8Input id and name:4 dInput 5 scores:9 8 9 8 9Input id and name:5 eInput 5 scores:9 9 9 9 9Input id and name:6 fInput 5 scores:8 6 7 8 6Input id and name:7 gInput 5 scores:8 7 8 8 8Input id and name:8 hInput 5 scores:9 8 7 8 7Input id and name:9 iInput 5 scores:8 9 8 9 8Input id and name:10 jInput 5 scores:8 8 8 8 9result.txt文件中的内容为:No.1:5 e 9.00No.2:4 d 8.60No.3:9 i 8.40输入提示:"Please input user's score:\n"输入提示:"Input id and name:"输入格式:"%d%s"输入提示:"Input %d scores:"输入格式:"%f"result.txt文件中的内容的输入输出:输出提示:"error!\n"输出格式:"No.%d:%d %s %.2f\n"的C语言程序
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 10
#define MAX_USERS 10
typedef struct {
int id;
char name[MAX_NAME_LEN+1];
float score;
} user_t;
int main() {
user_t users[MAX_USERS];
float scores[MAX_USERS][5];
float sum;
int i, j, k;
int n = 0; // number of users
// input scores for each user
printf("Please input user's score:\n");
while (n < MAX_USERS) {
printf("Input id and name:");
if (scanf("%d%s", &users[n].id, users[n].name) != 2) {
printf("error!\n");
return 1;
}
printf("Input 5 scores:");
sum = 0;
for (j = 0; j < 5; j++) {
if (scanf("%f", &scores[n][j]) != 1) {
printf("error!\n");
return 1;
}
sum += scores[n][j];
}
users[n].score = sum / 5;
n++;
}
// sort users by score
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (users[i].score < users[j].score) {
user_t temp = users[i];
users[i] = users[j];
users[j] = temp;
}
}
}
// output top 3 users to result.txt
FILE* fp = fopen("result.txt", "w");
if (fp == NULL) {
printf("error!\n");
return 1;
}
for (k = 0; k < 3 && k < n; k++) {
fprintf(fp, "No.%d:%d %s %.2f\n", k+1, users[k].id, users[k].name, users[k].score);
}
fclose(fp);
return 0;
}
```