如何替换撇号

2024-05-14 22:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是PHP代码

 <?php
    if (mysqli_num_rows($query) > 0) { ?>
    <?php
        $r = [];
        $f = [];
        $m = [];
        while ($row = mysqli_fetch_array($query)) {
            $r[] = $row['Recency'];
            $f[] = $row['Frequency'];
            $m[] = $row['Monetary'];
            ?>
        <tr>
            <td><?php echo $row['Nama']; ?></td>
            <td><?php echo $row['Recency']; ?></td>
            <td><?php echo $row['Frequency']; ?></td>
            <td><?php echo number_format($row['Monetary'], 0, ",", "."); ?></td>
        <tr>
        <?php }
            $recency = implode(',', $r);
            $frequency = implode(',', $f);
            $monetary = implode(',', $m);
            ?>
    <?php }
    ?>
<?php
    echo shell_exec('python C:\\xampp\htdocs\test\try.py "' . $recency . '" "' . $frequency . '" "' . $monetary . '"');
?>

这里是我的try.py代码:

import sys

q=[[sys.argv[1]],[sys.argv[2]],[sys.argv[3]]]
print (q)

我期望输出[[4,3,2],[1,2,3],[9,9,9]],但实际输出是[[4,3,2'],['1,2,3'],['9,9,9']]。如何替换'


Tags: 代码echosysquerytrtdrowphp
2条回答

你的参数是以字符串的形式给出的,所以你需要先拆分它们。然后,可以使用此简单函数将嵌套列表中的所有字符串转换为整数:

def cast_list(x):
     if isinstance(x, list):
         return list(map(cast_list, x))
     else:
         return int(x)

cast_list([x[0].split(",") for x in [['4,3,2'], ['1,2,3'], ['9,9,9']]])
# [[4, 3, 2], [1, 2, 3], [9, 9, 9]]

args作为字符串接收,因此必须首先基于,拆分它们,然后将数字映射到int

试试这个:

q=[map(int, sys.argv[1].split(',')),map(int, sys.argv[2].split(',')),map(int, sys.argv[3].split(','))]

因为Python3map将返回一个map对象,所以必须将其转换为list

q=[list(map(int, sys.argv[1].split(','))),list(map(int, sys.argv[2].split(','))),list(map(int, sys.argv[3].split(',')))]

相关问题 更多 >

    热门问题