我正在尝试删除后来发生的字符。点后有6个字符。它没有改变。
输入(字符串):
52.01317215 1121.53601074 1049.63146973 1540.70495605
517.47277832 85.62935638 553.46118164 106.97449493
1.70361996 550.58435059 159.12145996 714.25854492
输出(字符串)(我想要的):
52 1121 1049 1540
517 85 553 106
1 550 159 714
任何帮助将不胜感激......
答案 0 :(得分:2)
如果您的输入是多行字符串,并且您的输出应该是删除了所有小数部分的另一个多行字符串,则可以使用正则表达式:
import re
result = re.sub(r"\.\d+", "", mystring)
>>> print(result)
52 1121 1049 1540
517 85 553 106
1 550 159 714
答案 1 :(得分:2)
您可以使用下面的内容作为示例,您应该首先使用拆分以进入字符串直到for循环,然后再次使用拆分将分开。
using namespace Magick;
bool LoadTextCaption(const std::string& text,
const std::string& fontface,
int pointsize,
Magick::Color color)
{
Image image; // Allocated but not initialized.
image.font(fontface);
image.fillColor(color);
image.strokeColor(color);
image.fontPointsize(pointsize);
image.backgroundColor(Color("BLACK")); // <- Set background
image.read("CAPTION:" + text);
return true;
}
// ...
LoadTextCaption("Hello Caption!", "TimesNewRoman", 32, Color("RED"));
您的解决方案看起来像
52 1121 1049 1540 517 85 553 106 1 550 159 714
答案 2 :(得分:1)
一种方法是通过正则表达式:
s = """
52.01317215 1121.53601074 1049.63146973 1540.70495605
517.47277832 85.62935638 553.46118164 106.97449493
1.70361996 550.58435059 159.12145996 714.25854492
"""
import re
final_data = map(int, re.findall("\d+(?=\.)", s))
输出:
[52, 1121, 1049, 1540, 517, 85, 553, 106, 1, 550, 159, 714]
如果您不希望最终字符串转换为整数,您可以尝试:
new_data = [b for b in [re.findall("\d+(?=\.)", i) for i in s.split("\n")] if b]
输出:
[['52', '1121', '1049', '1540'], ['517', '85', '553', '106'], ['1', '550', '159', '714']]
答案 3 :(得分:1)
s = '''52.01317215 1121.53601074 1049.63146973 1540.70495605
517.47277832 85.62935638 553.46118164 106.97449493
1.70361996 550.58435059 159.12145996 714.25854492'''
s2 = ''
use_char = True
for c in s:
if c == '.':
use_char = False
elif c == ' ':
use_char = True
if use_char:
s2 += c
print(s2)
结果:
52 1121 1049 1540 85 553 106 550 159 714
答案 4 :(得分:0)
你可以试试这个
str="""52.01317215 1121.53601074 1049.63146973 1540.70495605
517.47277832 85.62935638 553.46118164 106.97449493
1.70361996 550.58435059 159.12145996 714.25854492"""
for i in str.split():
print '%d' % float(i)
答案 5 :(得分:0)
Python-3.9 代码
这个也可以用ListComprehension来解决
这里只是修改 Sandeep 的代码,
listOfFloats = """52.01317215 1121.53601074 1049.63146973 1540.70495605
517.47277832 85.62935638 553.46118164 106.97449493
1.70361996 550.58435059 159.12145996 714.25854492"""
result = [int(float(i)) for i in listOfFloats.split()]
print(result)