我有一些javascript代码生成一个文件,然后需要保存到服务器端,以便由Python脚本进一步处理。你知道吗
我的javascript创建了一个字符串,并在该字符串中使用'\n'分隔行,然后将该字符串输入PHP文件以保存为文本文件。你知道吗
我的问题是,当我在vi中打开文件时,它在每行的末尾显示^M,这使python感到困惑。我已经尝试让python生成一个在末尾没有^M的子字符串,但是python不会这样做。你知道吗
所以我的javascript字符串在调试时如下所示:
line1
line2
line3
但保存的文件如下所示:
line1^M
line2^M
line3^M
这是我的javascript:
for(var i = 0;i < existingList.length;i++){
console.log(existingList.options[i].value);
saveString += existingList.options[i].value + '\n';
}
saveToFile(saveString);
function saveToFile(saveString){
var data = new FormData();
data.append("data" , saveString);
var xhr = new XMLHttpRequest();
xhr.open( 'post', 'savefile.php', true );
xhr.send(data);
}
这是我的PHP:
<?php
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = "Cards.txt";
$file = fopen($fname, 'w');//creates new file
fwrite($file, $data);
fclose($file);
}
?>
我试过转换成UTF8,我试过了String.fromCharCode(13) 而不是'\n',我尝试在Python中删除^M。。。有什么想法吗?你知道吗
解决方案:
我用的是python
lines = text_file.read().split('\r')
或:
lines = text_file.read().split('\n')
我发现如果使用splitlines,它会自动处理行尾:
lines = text_file.read().splitlines()
尝试替换代码行:
saveString += existingList.options[i].value + '\n';
使用:
saveString += existingList.options[i].value + "\n";
或与:
saveString += existingList.options[i].value + "\r\n";
只能使用
"\n"
、"\r\n"
,因为使用单引号行不通。。你知道吗你可以在使用文件之前用
php
编辑文件或内容,将你不想要的内容替换为空,然后用file_get_contents()
和file_put_contents()
保存文件,str_replace()
这不是pyton,但是你可以尝试用php
修复它,就像你在使用文件之前可以做的那样。。你知道吗有多种方法可以做到这一点,这是。。你知道吗
str_replace()
示例:我希望这会把你带到正确的方向
对新行“\n”使用双引号,而不是“\n”
我测试了jagb的解决方案,它们似乎都不起作用,但这让我想到python如何读取文件。我终于找到了答案:
我用的是python
或:
我发现如果使用splitlines,它会自动处理行尾:
相关问题 更多 >
编程相关推荐